Android 如果onPause()或onStop()使用来自firebase数据库的嵌套回调中断函数,会发生什么情况
我有一个函数,它具有来自Firebase数据库的嵌套回调(onDataChange()等)。如果应用程序在执行所有回调之前停止或暂停(例如,用户在从FirebaseDatabase接收dataSnapshot之前收到电话),会发生什么情况?其余的回调是在后台执行还是根本不执行 这是我的密码:Android 如果onPause()或onStop()使用来自firebase数据库的嵌套回调中断函数,会发生什么情况,android,firebase,firebase-realtime-database,activity-lifecycle,Android,Firebase,Firebase Realtime Database,Activity Lifecycle,我有一个函数,它具有来自Firebase数据库的嵌套回调(onDataChange()等)。如果应用程序在执行所有回调之前停止或暂停(例如,用户在从FirebaseDatabase接收dataSnapshot之前收到电话),会发生什么情况?其余的回调是在后台执行还是根本不执行 这是我的密码: mUserOrder.addListenerForSingleValueEvent(new ValueEventListener() {
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();
}
侦听器将全部执行,直到:
通常情况下,当活动变为可见时,在onStart()期间添加侦听器,当活动变为不可见时,在onStop()期间删除侦听器。Ok。但是如果应用程序暂停或停止,其余的回调会运行吗?其余的回调是否能够在执行时进行UI更改@Dough回调将按照我在回答中概述的那样执行。活动暂停或停止后可以进行UI更新,因为视图层次结构仍处于附加状态。活动被销毁后更新无效,因为视图基本上已消失,并且永远不会回来。在onDestroy之后,永远不要保留对视图的引用,否则可能会泄露它们。在此之前,您确实需要删除侦听器。