android生命周期onActivityResult vs onStop

时间:2013-04-08 15:58:24

标签: android android-lifecycle

如果活动A为结果启动活动B,我的印象是在活动A的onActivityResult方法之前调用活动B的onStop方法。为什么不是这种情况?我刚刚使用B.onStop中设置的静态变量对其进行了测试,但是当我在A.onActivityResult中读取它时,变量为null。

2 个答案:

答案 0 :(得分:3)

我认为您要做的就是致电onPause,但是,您不想在那里做太多。 Here is what the docs say

  

protected void onPause()在API级别1中添加

     

当活动进行时,被称为活动生命周期的一部分   进入后台,但尚未被杀死。对应的   的onResume()。

     

当活动B在活动A前面启动时,此回调将会   可以在A上调用。在A的onPause()返回之前,不会创建B.所以   一定不要在这里做任何冗长的事情。

     

这个回调主要用于保存任何持久状态   活动正在编辑,向用户呈现“就地编辑”模型   如果没有足够的资源,确保没有任何损失   在没有先杀死这个活动的情况下开始新活动。这也是一个   做停止动画和其他事情的好地方   消耗大量的CPU以便切换到   下一个活动尽可能快,或关闭资源   独家访问,如相机。

答案 1 :(得分:2)

我认为您的印象有误,onActivityResultonResume之前被调用,onStop的文档在http://developer.android.com/reference/android/app/Activity.html的活动周期图表中的表格

  

当用户不再看到该活动时调用,因为另一个活动已恢复并且正在覆盖此活动。这可能是因为正在开始新活动,现有活动被带到这个活动之前,或者这个活动正在被销毁。

因此,在调用B中的onResume之前调用A中的onStop