android生命周期onActivityResult vs onStop

问题描述:

如果活动A为结果启动活动B,我感觉活动B的onStop方法在活动A的onActivityResult方法之前调用。为什么不是这种情况?我刚刚用一个在B.onStop中设置的静态变量进行了测试,但是当我在A.onActivityResult中读取它时,变量为空。android生命周期onActivityResult vs onStop

+2

请在文档中指出您的预期行为描述。 – CommonsWare 2013-04-08 16:00:50

+0

“活动B的onStop方法在活动A的onActivityResult方法之前调用” - 这是默认行为,这也是预期的。你对此有何看法? – 2013-04-08 16:03:32

+2

@CommonsWare:并非所有事情都需要记录。我想我必须在返回到活动A之前先离开活动B.在这方面,这似乎只是合乎逻辑的。 – learner 2013-04-08 16:04:04

我认为你想要做的是打电话,但是,你不想在那里做太多。 Here is what the docs say

保护无效的onPause()增加了在被称为当活动即将 到背景活动生命周期的一部分API等级1

,但还没有(还)被杀害。与onResume()的 相对应。

当活动B是活性的前推出,这个回调将 可以在A,B调用不会直到A的的onPause创建()返回,所以 一定不要做任何冗长这里。

此回调主要用于保存 活动编辑任何持续状态,呈现“编辑到位”的模式给用户 并确保什么,如果没有足够的资源来 开始新的丢失没有先杀死这一个的活动。这也是一个不错的地方,可以用来停止动画和其他东西,它们会消耗大量的CPU,以便尽快切换到 下一个活动,或者关闭专门访问的资源,例如 作为相机。

我觉得你的印象是错误的,onActivityResultonResume之前调用和onStop在表http://developer.android.com/reference/android/app/Activity.html以下活动周期图中的文档指出

当活动不再对用户可见调用,因为另一个活动已经恢复并且正在覆盖这一个。这可能是因为一项新的活动正在开始,现有的活动正在这个活动之前,或者这个活动正在被摧毁。

因此onResume在调用B之前调用onStop