Activity Lifecycle:startActivityForResult并按Back Button

时间:2010-07-15 07:58:43

标签: java android lifecycle

如果用户按下后退按钮,是否有调用Activity lifecycle的方法,但是如果调用方法startActivityForResult()则没有?我通过测试找不到方法。

2 个答案:

答案 0 :(得分:5)

对不起,我刚刚没有看到解决方案,但现在是:

通过调用startActivityForResult(),可以调用原始活动的onPause()和onStop()方法。

按下后退按钮时,会调用onPause(),onStop()和onDestroy()方法。

所以区别在于onDestroy()方法。

答案 1 :(得分:5)

  

通常,它将是onResume(),后跟onActivityResult()。   但是,调用活动可能会,但不太可能   当用户与另一个用户合作时,他们已经被杀死了   活动;当系统内存不足时会发生这种情况   指出它开始杀死东西,从“最不活跃”开始。在   那种情况,我想它会通过onCreate(),onStart(),   onResume()然后最后是onActivityResult()。   https://stackoverflow.com/a/2869832/323696

上面引用的答案是正确的,除了在被调用的活动完成之前解释调用活动被杀死或者finish()的时间。

在这种情况下,当呼叫活动活动#1 在使用 startActivityForResult 调用另一个活动活动#2 后恢复,活动#1 中的方法 onActivityResult 被称为 BEFORE onResume

了解您是否在活动#1 中的onResume中实例化SQLite数据库对象非常重要。如果是这样,当从活动#2 返回时,您还需要从 onActivityResult 中实例化对象。

有关详情,请参阅http://developer.android.com/reference/android/app/Activity.html上的“ startActivityForResult方法 ”。

我找不到描绘这个的LifeCycle Diagram。从活动返回结果的步骤总是在LifeCycle图像的文本描述中总结,说明“用户返回活动”或“活动到达前台