安卓Firebase持久化设置

5
我正在开发一个Android项目,遇到了一些问题。我使用Firebase作为数据库,在本地存储中离线保存数据,但当我第二次设置database.setPersistenceEnabled(true);时,我的应用程序会崩溃。我该如何防止这种情况发生? 我只在LoginActivity中设置了一次,并且没有使用它,但是当我的应用程序在后台运行并重新打开时,由于持久性而导致应用程序崩溃。 还有一个小问题,每次将数据保存到Firebase后,我的活动都会重新打开。我也不明白这一点。有人可以帮帮我吗?
2个回答

7

您需要重写Application类,将其添加到清单文件中,然后在那里调用database.setPersistenceEnabled(true);

例如:

public class MyApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        FirebaseDatabase.getInstance().setPersistenceEnabled(true);
    }

}

然后在您的AndroidManifest.xml文件中:

<application
        android:name=".MyApplication"  <!--Relative path of MyApplication.java-->
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        tools:replace="android:supportsRtl"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
...
</application>

在清单文件的应用程序标签中,它说“无法分配给android.app.Application”。 - user5766922
我猜你可以这样做,或者将相同的代码插入到在应用程序启动时运行的服务中。 - varun

1

最好的方法是使用ViewModel类来保存它!这样,即使在重建片段或活动后,也不会丢失查询。

class DashboardViewModel : ViewModel() {
    private lateinit var database: DatabaseReference
    private var postdata = MutableLiveData<List<Post>>()

   init {
       FirebaseDatabase.getInstance().setPersistenceEnabled(true);
   }

}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接