如果 onPause() 或 onStop() 中断带有来自 firebase 数据库的嵌套回调的函数,会发生什么

What happens if onPause() or onStop() interrupt a function with nested callbacks from firebase database

我有一个函数,它具有来自 Firebase 数据库的嵌套回调(onDataChange() 等)。如果应用在所有回调执行之前停止或暂停(例如,用户在从 FirebaseDatabase 接收 dataSnapshot 之前接收到 phone 调用),会发生什么情况?其余的回调是在后台执行还是根本不执行?

这是我的代码:

        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();
                                                        }

监听器将全部执行到:

  1. 您移除监听器。
  2. 应用程序进程终止(这可能发生在用户不再可见的任何时候)。
  3. 在较新版本的 Android 上,该应用程序会切断对该应用程序的网络访问,因为它在变得不可见后处于后台的时间太长。重新获得可见性后,侦听器将在 Firebase SDK 重新获得连接时再次开始触发。

通常在 onStart() 期间添加侦听器,当 activity 变为可见时,并在 onStop() 期间移除它们,当 activity 变为不可见时。