在等待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();
}
仍然被称为?
答案 0 :(得分:3)
是的,一般来说,Activity只是一个普通的Java对象。 onCreate(), onPause(), onStop()
等只是普通的Java方法。所有魔法来自运行活动的系统容器,并在lifecycle的特定时刻调用这些方法
所以 - onPause不会影响活动状态,但是当活动放在后台时会调用它。
如果您创建了一些侦听器对象,只要它与某个GC根ex连接,它就会存在。生活活动(甚至在背景中)或仅仅是保持对此监听器的引用的firebase。
通常,如果要从前台的活动中侦听事件,则应在onResume()
中注册侦听器,并在onPause()
中取消注册。有关特定生命周期方法的参考,请参阅上面的链接。