在OnPause()之后会发生什么,是否仍然可以调用侦听器?

时间:2016-11-28 20:41:44

标签: android firebase

在等待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();
} 

仍然被称为?

1 个答案:

答案 0 :(得分:3)

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

通常,如果要从前台的活动中侦听事件,则应在onResume()中注册侦听器,并在onPause()中取消注册。有关特定生命周期方法的参考,请参阅上面的链接。