Vin*_*ria 27 android firebase firebase-realtime-database
当我尝试在fIREBASE中设置持久性时遇到问题,有人可以解释一下如何去做,
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_meal_details);
if (mDatabase == null) {
mDatabase = FirebaseDatabase.getInstance().getReference();
FirebaseDatabase.getInstance().setPersistenceEnabled(true);
// ...
}
// FirebaseDatabase.getInstance().setPersistenceEnabled(true);
mDatabase = FirebaseDatabase.getInstance().getReference();
Run Code Online (Sandbox Code Playgroud)
Sid*_*ghe 87
根据Firebase Documentations,setPersistenceEnabled仅被调用一次(在FirebaseDatabase的任何其他实例之前)
所以我这个问题的解决方案如下
例如
class MyFirebaseApp extends android.app.Application
@Override
public void onCreate() {
super.onCreate();
/* Enable disk persistence */
FirebaseDatabase.getInstance().setPersistenceEnabled(true);
}
Run Code Online (Sandbox Code Playgroud)
例如
在应用程序标记中添加以下内容
android:name="com.example.MyFirebaseApp"
Run Code Online (Sandbox Code Playgroud)
这应该工作正常.
也不要在任何其他Activity中使用setPersistenceEnabled.
Fra*_*len 17
像这样的东西(iirc):
if (mDatabase == null) {
FirebaseDatabase database = FirebaseDatabase.getInstance();
database.setPersistenceEnabled(true);
mDatabase = database.getReference();
// ...
}
Run Code Online (Sandbox Code Playgroud)
Ril*_*nda 10
创建一个将在整个应用程序中使用的应用程序类,并在其中初始化firebase Persistence:
FirebaseHandler类 无论您想要命名它,都可以调用/命名该类
public class FirebaseHandler extends Application {
@Override
public void onCreate() {
super.onCreate();
FirebaseDatabase.getInstance().setPersistenceEnabled(true);
}
}
Run Code Online (Sandbox Code Playgroud)
将应用程序类添加到您的Manifest:
<application
android:name=".FirebaseHandler"
android:allowBackup="true"
android:icon="@mipmap/app_icon"
android:label="@string/app_name"
android:theme="@style/AppTheme">
Run Code Online (Sandbox Code Playgroud)
这样,数据持久性将应用于整个项目.为了将磁盘持久性应用于特定数据.
DatabaseReference myRef=FirebaseDatabase.getInstance().getReference("people");
myRef.keepSynced(true);
Run Code Online (Sandbox Code Playgroud)
这将使您的离线数据保持同步并保持最新状态
myRef.keepSynced(true);
Run Code Online (Sandbox Code Playgroud)
了解更多关于磁盘持久 这里
此解决方案对我有效,无需扩展android.app.Application
private static FirebaseDatabase firebaseDatabase;
if (firebaseDatabase == null) {
firebaseDatabase=FirebaseDatabase.getInstance();
firebaseDatabase.setPersistenceEnabled(true);
}
/* Do your other stuff */
Run Code Online (Sandbox Code Playgroud)
要么
if (savedInstanceState == null) {
FirebaseDatabase.getInstance().setPersistenceEnabled(true);
}
Run Code Online (Sandbox Code Playgroud)
只需将其添加到活动类的顶部即可:
static {
FirebaseDatabase.getInstance().setPersistenceEnabled(true);
}
Run Code Online (Sandbox Code Playgroud)
为我工作,但不确定这是否是最佳做法。
归档时间: |
|
查看次数: |
12338 次 |
最近记录: |