Android / Java - 活动生命周期 - 返回上一个活动的位置?

时间:2013-11-21 17:48:07

标签: java android android-activity android-lifecycle

当我在第二次点击“返回”时,我无法找到有关我在第一次活动中的位置的信息。为什么呢?

第一个肯定没有被重新制作,所以“on ...”(比如onResume(),onStop()等)是吗?

3 个答案:

答案 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)

答案取决于您的活动。以下是一些不同的场景,这些场景将导致调用不同的生命周期方法。下面的每个场景都假设有一个活动AB,后者由第一个活动调用;即按下按钮后。

场景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()

在生命周期文档中,您将找到以下可能使用的流程图:

android activity life cycle flow diagram