【问题标题】:What happens after OnPause(), can a listener still be called?OnPause() 之后会发生什么,仍然可以调用侦听器吗?
【发布时间】:2016-11-28 20:41:43
【问题描述】:

在等待来自 Firebase ValueEventListener 的回复时,我不希望我的 Activity 在进入 OnPause() 时停止使用此代码收听:

removeUIListener(OnUpdateUserDoneListener.class, this);

我可以将该行放在onStop() 中而不是OnPause() 中吗?这样当User 返回并且听众已经解雇时,一切都会好起来吗?

或者在另一个问题 - OnPause() 之后会发生什么?可以这样的听众吗:

/**
 * Waiting for all done when updating User
 *
 * @param userItem the user item
 */
@Override
public void OnUpdateUserDone(UserItem userItem) {
    isUpdateUserDone = true;
    if(isCreateToyDone)
        exitSearch();
} 

还叫吗?

【问题讨论】:

    标签: android firebase


    【解决方案1】:

    是的,一般来说,Activity 只是一个普通的 Java 对象。 onCreate(), onPause(), onStop() 等只是普通的 Java 方法。所有魔法都来自运行活动的系统容器,并在lifecycle 的特定时刻调用这些方法 所以 - onPause 不会影响活动的状态,但是当活动被置于后台时会调用它。 如果你创建了一些监听器对象,只要它与某个 GC 根 ex 有连接,它就会存在。活动活动(即使在后台)或只是保持对该侦听器的引用的 firebase。

    一般来说,如果你想在前台监听activity的事件,你应该在onResume()注册监听器并在onPause()取消注册。在调用特定生命周期方法时作为参考,请查看上面的链接。

    【讨论】:

      猜你喜欢
      • 2021-12-31
      • 2015-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-07
      相关资源
      最近更新 更多