如果 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();
}
监听器将全部执行到:
- 您移除监听器。
- 应用程序进程终止(这可能发生在用户不再可见的任何时候)。
- 在较新版本的 Android 上,该应用程序会切断对该应用程序的网络访问,因为它在变得不可见后处于后台的时间太长。重新获得可见性后,侦听器将在 Firebase SDK 重新获得连接时再次开始触发。
通常在 onStart() 期间添加侦听器,当 activity 变为可见时,并在 onStop() 期间移除它们,当 activity 变为不可见时。
我有一个函数,它具有来自 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();
}
监听器将全部执行到:
- 您移除监听器。
- 应用程序进程终止(这可能发生在用户不再可见的任何时候)。
- 在较新版本的 Android 上,该应用程序会切断对该应用程序的网络访问,因为它在变得不可见后处于后台的时间太长。重新获得可见性后,侦听器将在 Firebase SDK 重新获得连接时再次开始触发。
通常在 onStart() 期间添加侦听器,当 activity 变为可见时,并在 onStop() 期间移除它们,当 activity 变为不可见时。