8

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

4

2 回答 2

3

我认为您想要做的是 call onPause,但是,您不想在那里做太多事情。这是文档所说的

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

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

当活动 B 在活动 A 之前启动时,将在 A 上调用此回调。在 A 的 onPause() 返回之前不会创建 B,因此请确保此处不要做任何冗长的事情。

此回调主要用于保存活动正在编辑的任何持久状态,向用户呈现“就地编辑”模型,并确保如果没有足够的资源来启动新活动而没有首先杀死该活动,则不会丢失任何内容。这也是一个很好的地方来做一些事情,比如停止动画和其他消耗大量 CPU 的事情,以便尽快切换到下一个活动,或者关闭诸如相机之类的独占访问资源。

于 2013-04-09T02:51:44.983 回答
2

我认为您的印象是错误的,onActivityResult之前调用过,并且在活动周期图之后的表格中的 http://developer.android.com/reference/android/app/Activity.htmlonResume文档状态onStop

当活动不再对用户可见时调用,因为另一个活动已恢复并正在覆盖该活动。这可能是因为正在启动一项新活动,正在将现有活动带到这个活动之前,或者这个活动正在被破坏。

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

于 2013-04-08T22:55:42.550 回答