如何在Firebase中存储HashMap以供离线使用

Ben*_*ham 2 java android gridview firebase

我有一张地图:

  Map<String, String> noidung = new HashMap<>();
Run Code Online (Sandbox Code Playgroud)

在Map从火力地堡接收数据,我告诉他们的Gridview.一切都运作良好.但是当手机离线时,我希望我加载的数据保留在Gridview上.我的想法是将Map noidung文件存储(我认为SharedPreference)以便脱机使用.我尝试了很多解决方案但失败了.

Nie*_*els 9

看看这个:

FirebaseDatabase.getInstance().setPersistenceEnabled(true);
Run Code Online (Sandbox Code Playgroud)

从文档:

Firebase应用会自动为您处理临时网络中断.离线时仍然可以使用缓存数据,并且在恢复网络连接时将重新发送您的写入.启用磁盘持久性使我们的应用程序即使在应用程序重新启动后也能保持其所有状态.我们只需一行代码即可启用磁盘持久性.

https://firebase.google.com/docs/database/android/offline-capabilities

此外,您可以保持特定位置同步:

DatabaseReference scoresRef = FirebaseDatabase.getInstance().getReference("scores");
scoresRef.keepSynced(true);
Run Code Online (Sandbox Code Playgroud)

启用持久性设置必须是对Firebase API的第一次调用.所以在你做任何查询/等之前.一个好的位置在你的Application子类中:

public class MainApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();

        FirebaseDatabase.getInstance().setPersistenceEnabled(true);
    }
Run Code Online (Sandbox Code Playgroud)

不要忘记相应地更新您的清单:

<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>
Run Code Online (Sandbox Code Playgroud)

这真的很容易.这就是Firebase令人敬畏的原因:-)