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

问题描述 投票:2回答:1

我有一个函数,它具有来自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 firebase-realtime-database activity-lifecycle
1个回答
3
投票

听众将全部执行,直到:

  1. 您删除了侦听器。
  2. 应用程序进程终止(可能在用户不再可见的任何时候发生)。
  3. 在较新版本的Android上,该应用程序会削减对该应用程序的网络访问权限,因为它在变为隐身后已经在后台使用了太长时间。重新获得可见性后,当Firebase SDK重新获得连接时,听众将再次开始触发。

习惯上在onStart()期间,当活动变得可见时添加侦听器,并在活动变得不可见时在onStop()期间删除它们。

© www.soinside.com 2019 - 2024. All rights reserved.