【问题标题】:How to store a HashMap in Firebase for offline use如何在 Firebase 中存储 HashMap 以供离线使用
【发布时间】:2016-06-23 13:34:12
【问题描述】:

我有一张地图:

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

Map 从 Firebase 接收数据,我将它们显示在 Gridview 中。一切运作良好。 但是当手机离线时,我希望我加载的数据保留在 Gridview 上。 我的想法是将Map noidung 存储到一个文件(我认为是SharedPreference)中以供离线使用。我尝试了很多解决方案,但都失败了。

【问题讨论】:

  • 保留您的更改(例如使用 sqlite)并恢复您的 onResumeActivity

标签: java android gridview firebase


【解决方案1】:

看看这个:

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 如此出色的原因 :-)

【讨论】:

  • 感谢您的回答。你能告诉我在哪里添加 FirebaseDatabase.getInstance().setPersistenceEnabled(true); ?我在片段中使用firebase,它有错误:
  • com.google.firebase.database.DatabaseException:必须在使用 FirebaseDatabase 实例之前调用 setPersistenceEnabled()。在 com.google.firebase.database.FirebaseDatabase.zzhM(未知来源) 在 com.google.firebase.database.FirebaseDatabase.setPersistenceEnabled(未知来源)
  • 它必须是对 Firebase API 的第一次调用。所以在你做任何查询/等之前。此代码的常见位置是您的 Application 子类。请参阅我的更新答案。
  • 谢谢你,我终于在这里得到了答案:stackoverflow.com/questions/37753991/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多