如果活动A为结果启动活动B,我的印象是在活动A的onActivityResult方法之前调用活动B的onStop方法。为什么不是这种情况?我刚刚使用B.onStop
中设置的静态变量对其进行了测试,但是当我在A.onActivityResult
中读取它时,变量为null。
答案 0 :(得分:3)
我认为您要做的就是致电onPause
,但是,您不想在那里做太多。 Here is what the docs say:
protected void onPause()在API级别1中添加
当活动进行时,被称为活动生命周期的一部分 进入后台,但尚未被杀死。对应的 的onResume()。
当活动B在活动A前面启动时,此回调将会 可以在A上调用。在A的onPause()返回之前,不会创建B.所以 一定不要在这里做任何冗长的事情。
这个回调主要用于保存任何持久状态 活动正在编辑,向用户呈现“就地编辑”模型 如果没有足够的资源,确保没有任何损失 在没有先杀死这个活动的情况下开始新活动。这也是一个 做停止动画和其他事情的好地方 消耗大量的CPU以便切换到 下一个活动尽可能快,或关闭资源 独家访问,如相机。
答案 1 :(得分:2)
我认为您的印象有误,onActivityResult
在onResume
之前被调用,onStop
的文档在http://developer.android.com/reference/android/app/Activity.html的活动周期图表中的表格
当用户不再看到该活动时调用,因为另一个活动已恢复并且正在覆盖此活动。这可能是因为正在开始新活动,现有活动被带到这个活动之前,或者这个活动正在被销毁。
因此,在调用B中的onResume
之前调用A中的onStop
。