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

标签 android firebase firebase-realtime-database activity-lifecycle

我有一个函数,其中包含来自 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();
                                                        }

最佳答案

监听器将全部执行,直到:

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

习惯上,当 Activity 变得可见时,在 onStart() 期间添加监听器;当 Activity 变得不可见时,在 onStop() 期间删除监听器。

关于android - 如果 onPause() 或 onStop() 使用 Firebase 数据库中的嵌套回调中断函数,会发生什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47988790/

相关文章:

java - Recyclerview 有条件点击

javascript - 使用 Firebase 实时数据库查询子级中的嵌套值,其中键是随机的

node.js - 在嵌套的 firebase 实时数据库结构中添加索引的正确方法

java - Android 应用程序在 Android 8.0 (Google Pixel XL) 上崩溃

安卓工作室 | 4.2 |北极狐 |不显示可调试的进程

android - 使用 HTML5 启用后置摄像头

android - 在 C++ OpenCV 中查找倾斜角度并旋转图像

java - 从火力基地得到 child ?

ios - Firebase增加值而不读取先前的值?

android - 避免 Android Firebase 中过时的匿名用户