我有一个地图:
Map<String, String> noidung = new HashMap<>();
Map
从Firebase接收数据,我在Gridview
中显示它们。一切都很好。但是,当手机脱机时,我希望我已加载的数据保留在GridView上。我的想法是将Map noidung
存储到文件(我认为共享的Preference)中以使用离线。我尝试了很多解决方案,但失败了。
看一下:
FirebaseDatabase.getInstance().setPersistenceEnabled(true);
来自文档:
firebase应用程序会自动为您处理临时网络中断。缓存数据仍将可用,而离线,当网络连接恢复时,您的写作将很讨厌。启用磁盘持久性允许我们的应用程序即使在应用程序重新启动后也可以保留其所有状态。我们只需一行代码即可启用磁盘持久性。
https://firebase.google.com/docs/database/android/offline-capabilities
此外,您可以保持特定位置的同步:
DatabaseReference scoresRef = FirebaseDatabase.getInstance().getReference("scores");
scoresRef.keepSynced(true);
启用启用持久性的设置必须是对firebase API的首次调用。因此,在进行任何查询/等之前。您的Application
子类位置很好:
public class MainApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
FirebaseDatabase.getInstance().setPersistenceEnabled(true);
}
不要忘记相应地更新您的清单:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="my.package" >
...
<application android:name=".MainApplication">
...
</application>
</manifest>
真的很容易。这就是Firebase变得如此出色的: - )