0

我阅读了有关任务和回栈的信息(http://developer.android.com/guide/components/tasks-and-back-stack.html),但仍然有一些困惑。我只是在一个案例上尝试不同的东西和stcuk。举个例子:我们有两个应用程序 A1 和 A2。A1 有一个活动,比如 A1_first(也是主要活动),A2 有两个活动 A2_first(主要活动)和 A2_second。A2_second 是一个 singleTask 活动。A1_frist 在按钮按下时调用 A2_second,A2_first 也在按钮按下时调用 A2_second。

如果我启动 A2 我可以看到 A2_first 屏幕,按下按钮后我转到 A2_second(如预期的那样)但假设我首先启动 A1 并在按下按钮后 A2_second ,现在按下主页按钮并再次从启动器中的 A2 图标,我到达 A2_second 但是我希望达到 A2_first。

我不明白我错过了什么。有人可以解释按 A2 A1_first ----- > A2_second ----> home -----> A2_second (为什么不是 A2_first ?? A2_first 是 A2 的主要活动)。

4

4 回答 4

2

如果您从主屏幕启动应用程序,它不一定会将您带到该应用程序的第一个活动。如果应用程序已经在运行,它只会将您返回到您在应用程序中中断的位置。这就是你所看到的。此外,您使用“singleTask”启动模式使事情变得更加复杂。一般来说,您不应该使用“singleTask”或“singleInstance”启动模式。这些是非常特殊的启动模式,主要用于创建主屏幕替换。在任何情况下,如果您需要使用其中一种特殊启动模式,您需要确保使用这些启动模式的活动具有不同的应用程序图标。如果 A2_first 和 A2_second 有不同的应用程序图标,那么发生的事情会更明显。

于 2012-12-17T09:53:22.493 回答
0

如果您从活动 A 启动(成功)活动 B,然后按“返回”,您将返回活动 A。这些活动属于哪些应用程序。

抱歉,Android 中没有用于返回的标准“home”命令。例如,在我的手机上,“主页”将返回到开始屏幕,所有活动都置于后台。显然,你不是这个意思。

我这还不够,把代码放在这里,包含活动调用和返回处理。很难说一些不知道的事情,你的呼叫按钮和返回过程到底做了什么。

在了解任务和后台堆栈之前,我建议先了解活动开始/返回。

于 2012-12-17T09:54:22.057 回答
0

当您按下主页按钮时,A2_second 就会进入后台。它没有结束(完成)。因此,当您单击 A2 图标时,系统将从 A2 中查找上次访问的活动(如果有)。由于 A2_second 可用并且处于后台状态 - 系统将简单地将其调用回前台。

这就是android建立多任务的方式。整个应用程序(所有活动)永远不会一次加载到内存中。相反,一个应用程序被分解成可以在需要时加载的功能块(活动)。因此,当您从另一个应用程序调用一个活动(从 A1_first 调用 A2_second),然后按主页时,此活动(A2_second)将进入后台。当您单击 A2 图标时,由于系统知道 A2_second 在后台,因此它被带到前台,因为用户最后访问了它,并且可能是他/她正在寻找的部分。

但是,如果您按“返回”,则 A2_second 将完成。在此之后,如果您单击 A2 图标,则会启动 A2_first。

这样,来自不同应用程序的不同部分(活动)可以在内存中共存,并为用户提供无缝体验,同时保持系统快速和快速。

于 2012-12-17T10:01:53.683 回答
0

如果我理解正确,您并没有退出应用程序,而只是按下主页按钮。如果应用程序状态未更改,它将从缓存中返回,并打开与您在按 home 之前离开它时相同的活动。

尝试如何在按下 Home 按钮时完成()一个 Activity,以获取有关如何在按下 Home 按钮时完成应用程序的更多详细信息

于 2012-12-17T09:51:57.413 回答