如果活动A启动活动B的结果,我的印象是活动B的onStop方法在活动A的onActivityResult方法之前被调用。为什么不是这样?我刚刚使用设置的静态变量对其进行了测试,B.onStop
但是当我在A.onActivityResult
变量中读取它时,它直到为空。
2 回答
我认为您想要做的是 call onPause
,但是,您不想在那里做太多事情。这是文档所说的:
protected void onPause () 在 API 级别 1 中添加
当活动进入后台但尚未(尚未)被杀死时,作为活动生命周期的一部分调用。onResume() 的对应项。
当活动 B 在活动 A 之前启动时,将在 A 上调用此回调。在 A 的 onPause() 返回之前不会创建 B,因此请确保此处不要做任何冗长的事情。
此回调主要用于保存活动正在编辑的任何持久状态,向用户呈现“就地编辑”模型,并确保如果没有足够的资源来启动新活动而没有首先杀死该活动,则不会丢失任何内容。这也是一个很好的地方来做一些事情,比如停止动画和其他消耗大量 CPU 的事情,以便尽快切换到下一个活动,或者关闭诸如相机之类的独占访问资源。
我认为您的印象是错误的,onActivityResult
之前调用过,并且在活动周期图之后的表格中的 http://developer.android.com/reference/android/app/Activity.html的onResume
文档状态onStop
当活动不再对用户可见时调用,因为另一个活动已恢复并正在覆盖该活动。这可能是因为正在启动一项新活动,正在将现有活动带到这个活动之前,或者这个活动正在被破坏。
因此onResume
,在 A 中被调用之前onStop
,在 B 中被调用。