Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Firestore管理Android后台堆栈和侦听器以优化文档读取_Java_Android_Firebase_Google Cloud Firestore - Fatal编程技术网

Java 使用Firestore管理Android后台堆栈和侦听器以优化文档读取

Java 使用Firestore管理Android后台堆栈和侦听器以优化文档读取,java,android,firebase,google-cloud-firestore,Java,Android,Firebase,Google Cloud Firestore,我在Android中有活动A和活动B 在活动A中有一个FirestoreRecyclerAdapter和一个FirestoreRecyclerOptions对象,它们实时更新一个RecyclerView。我从活动a中的一个按钮开始活动B,但我没有完成活动a,因此当返回到活动a时,我不需要再次阅读之前在我的recyclerView中加载的所有文档 但是,如果我从活动B启动一个新的意图到活动a,那么旧活动a中的Firestore侦听器会发生什么情况?它是自动终止的吗?当您使用Query的方法时,您应

我在Android中有活动A和活动B

在活动A中有一个
FirestoreRecyclerAdapter
和一个
FirestoreRecyclerOptions
对象,它们实时更新一个
RecyclerView
。我从活动a中的一个按钮开始活动B,但我没有完成活动a,因此当返回到活动a时,我不需要再次阅读之前在我的recyclerView中加载的所有文档


但是,如果我从活动B启动一个新的意图到活动a,那么旧活动a中的Firestore侦听器会发生什么情况?它是自动终止的吗?

当您使用Query的方法时,您应该根据活动的生命周期删除侦听器,如我在以下帖子中的回答所述:

如果您正在使用Firebase UI库,一旦开始侦听
onStart()
方法中的更改:

@Override
protected void onStart() {
    super.onStart();
    firestoreRecyclerAdapter.startListening();
}
@Override
protected void onStop() {
    super.onStop();
    if(firestoreRecyclerAdapter != null) {
        firestoreRecyclerAdapter.stopListening();
    }
}
您还需要停止侦听
onStop()
方法中的更改:

@Override
protected void onStart() {
    super.onStart();
    firestoreRecyclerAdapter.startListening();
}
@Override
protected void onStop() {
    super.onStop();
    if(firestoreRecyclerAdapter != null) {
        firestoreRecyclerAdapter.stopListening();
    }
}

当您使用Query的方法时,您应该根据活动的生命周期删除侦听器,如我在以下帖子中的回答所述:

如果您正在使用Firebase UI库,一旦开始侦听
onStart()
方法中的更改:

@Override
protected void onStart() {
    super.onStart();
    firestoreRecyclerAdapter.startListening();
}
@Override
protected void onStop() {
    super.onStop();
    if(firestoreRecyclerAdapter != null) {
        firestoreRecyclerAdapter.stopListening();
    }
}
您还需要停止侦听
onStop()
方法中的更改:

@Override
protected void onStart() {
    super.onStart();
    firestoreRecyclerAdapter.startListening();
}
@Override
protected void onStop() {
    super.onStop();
    if(firestoreRecyclerAdapter != null) {
        firestoreRecyclerAdapter.stopListening();
    }
}

请添加您正在使用的实际代码,而不是描述代码。我没有特定代码,我正在描述一个场景-这个问题是一般性的,因为我想了解Firestore中的侦听器在所描述的情况下是如何工作的。适配器的类型是什么,
FirestoreRecyclerAdapter
?是,这是一个有趣的问题,因为我怀疑实时侦听器的优化,我更新了我的问题,而不是描述代码,请添加您正在使用的实际代码。我没有具体的代码,我正在描述一个场景-这个问题是一般性的,因为我想了解Firestore中的侦听器在所描述的案例中是如何工作的。什么是适配器类型,
FirestoreRecyclerAdapter
?是的,这是一个有趣的问题,因为我怀疑实时侦听器的优化,我更新了我的问题