我有一张地图:

  Map<String, String> noidung = new HashMap<>();

Map从firebase接收数据,我在Gridview中显示它们。一切顺利。
但当手机离线时,我希望我加载的数据保留在gridview中。
我的想法是将Map noidung存储到一个文件(我认为sharedpreference)中以便脱机使用。我试了很多办法,但都失败了。

最佳答案

看看这个:

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让人如此敬畏的原因:-)

07-26 09:33
查看更多