我有一个函数,其中包含来自 Firebase 数据库的嵌套回调(onDataChange() 等)。如果应用程序在执行所有回调之前停止或暂停(例如用户在从 FirebaseDatabase 接收 dataSnapshot 之前接到电话),会发生什么情况?其余的回调是在后台执行还是根本不执行?
这是我的代码:
mUserOrder.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
mUserOrder.child(Integer.toString(lastOrders.get(n - 5))).addListenerForSingleValueEvent(new ValueEventListener() { //getting the orderId of the order to be removed
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
removeOrderID = (String) dataSnapshot.getValue();
mDatabaseOrder.child(removeOrderID).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
removeOrder = dataSnapshot.getValue(RequestOrder.class);
mRecycleOrdersDB.child(removeOrderID).setValue(removeOrder);
mDatabaseOrder.child(removeOrderID).removeValue();
mUserOrder.child(Integer.toString(lastOrders.get(n - 5))).removeValue();
progress.hide();
startMainActivity();
}
最佳答案
监听器将全部执行,直到:
- 您删除了监听器。
- 应用进程终止(用户不再可见时可能会发生这种情况)。
- 在较新版本的 Android 上,该应用会切断对该应用的网络访问,因为它在变得不可见后在后台运行的时间太长。重新获得可见性后,当 Firebase SDK 重新获得连接时,监听器将开始再次触发。
习惯上,当 Activity 变得可见时,在 onStart() 期间添加监听器;当 Activity 变得不可见时,在 onStop() 期间删除监听器。
关于android - 如果 onPause() 或 onStop() 使用 Firebase 数据库中的嵌套回调中断函数,会发生什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47988790/