过去一个月我一直在用Firestore android构建一个应用程序,这个bug一直困扰着我,推迟了我启动我的应用程序。 有时读取或写入数据时,我没有收到任何回调,如onComplete,onSuccess或onFailure,这样可以让我的应用程序在显示进度对话框时保持永久加载。在调查此行为后,我注意到它只发生在应用程序在前台几分钟后尝试打开另一个活动时,让我们说主要活动,没有数据将被加载,我不会收到任何回调。但是如果我在打开应用程序后非常快速地导航到第二个活动,数据将被加载而没有任何问题。 Firestore客户端是否断开连接或发生了什么?我将如何解决此问题?
我如何加载数据的示例
//公司的FireStore
FirebaseFirestore mDatabase = FirebaseFirestore.getInstance();
CollectionReference popular = mDatabase.collection("AvailableLocations").document("HL").collection("All");
Query query = popular.orderBy("name", Query.Direction.ASCENDING);
query.get().addOnCompleteListener(this, new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
mProgressBar.setVisibility(View.GONE);
if (task.isSuccessful()) {
for (DocumentSnapshot document : task.getResult()) {
countiesList.add(document.getString("name"));
}
mAdapter.notifyDataSetChanged();
} else {
Log.d(TAG, "Error getting documents: ", task.getException());
}
}
});
答案 0 :(得分:0)
您使用的addOnCompleteListener()形式将Activity
作为第一个参数。这会导致活动范围的侦听器在调用onStop()
的{{1}}方法时自动删除。
从您的帖子中不清楚发布的代码所处的活动以及活动的交互方式。侦听器未触发的可能解释是在查询完成之前停止了关联活动(代码中的Activity
)。