当我在第二次点击“返回”时,我无法找到有关我在第一次活动中的位置的信息。为什么呢?
第一个肯定没有被重新制作,所以“on ...”(比如onResume(),onStop()等)是吗?
答案 0 :(得分:0)
onResume()
将根据Activity Lifecycle
在该链接的图片中显示
首先会调用用户返回活动
onPause()
,然后在返回时,在正常情况下会调用onResume()
。
要检查此问题,您可以@Override
onResume()
查看是否已将其调用。
答案 1 :(得分:0)
按回按钮后,您将返回活动1的onResume()
有关详情,请查看:http://developer.android.com/training/basics/activity-lifecycle/starting.html
答案 2 :(得分:0)
答案取决于您的活动。以下是一些不同的场景,这些场景将导致调用不同的生命周期方法。下面的每个场景都假设有一个活动A
和B
,后者由第一个活动调用;即按下按钮后。
场景1:B
是半透明的和/或不是完整尺寸(即对话式)
活动A
将失去焦点,但仍然可见,因为B
不是全尺寸和/或透明的,位于A
之上。在这种情况下,A
将暂停。暂停的活动完全处于活动状态(它维护所有状态和成员信息并保持附加到窗口管理器),但在极低内存情况下可能被系统杀死。
场景2:B
为全尺寸
A
完全遮盖了活动B
。它将停止。它仍然保留所有状态和成员信息,但是,它不再对用户可见,因此它的窗口是隐藏的,当其他地方需要内存时,它通常会被系统杀死。
上述所有内容都在life cycle section of the Activity
class.
因此,我们现在知道活动A
将暂停(方案1)或已停止(方案2),否则它将被系统释放内存。让我们首先假设后者没有发生,那么以下生命周期方法是相关的:
情景1: onPause()
显示B
,然后onResume()
当A
重新聚焦时。
情景2::onPause()
和onStop()
显示B
,然后onStart()
和onResume()
A
来回到焦点。
如果某个活动暂停或停止,系统可以通过要求完成活动或仅删除其进程来从内存中删除活动。当它再次显示给用户时,必须完全重新启动并恢复到之前的状态。这意味着活动将以onCreate()
重新开始,然后是onStart()
和onResume()
。
在生命周期文档中,您将找到以下可能使用的流程图: