非前台活动的活动生命周期

时间:2017-01-04 11:09:46

标签: android android-lifecycle

我的应用程序有一个主要活动,偶尔会在某些用户操作上打开另一个活动(并保留在活动堆栈中)。

我的理解是,如果需要,Android可以决定在后台处理主要活动,尽管当前可见的活动将不会受到伤害。 我很确定我在过去(2 - 3年前)看过这种现象。

以下是问题 -

  • 虽然应用程序位于前台,Android可能会在什么条件下决定终止后台活动?
  • 某些特定版本的Android /供应商是否有更多机会这样做?
  • 如果我没记错的话,在这种情况下,可能会或可能不会调用活动的onStop。这个假设是对的吗?

2 个答案:

答案 0 :(得分:2)

  

我的理解是,如果需要,Android可以决定杀死主要活动

Android中没有main activity概念。您的应用程序可以被整体杀死,或者一些未使用的元素可以被垃圾收集。

  

我很确定我已经看到过这种现象

这不是一种现象,而是正常的Android系统行为。

  

虽然应用程序位于前台,Android可能会在什么条件下决定终止后台活动?

真的没关系。所有您需要打扰的是,您可以被杀死/重新启动,并且知道您需要做的就是确保您的数据能够存活。

  

某些特定版本的Android /供应商是否有更多机会这样做?

同样 - 没关系。确保您的应用正确处理此类案例,就是这样。

  

如果我没记错的话,在这种情况下,可能会或可能不会调用活动的onStop。这个假设是对的吗?

不,除非您的过程真的被杀死,否则不会被垃圾收集。

答案 1 :(得分:1)

如果某项活动被另一项活动完全遮挡,则会停止该活动。它仍然保留所有状态和成员信息,但是,它不再对用户可见,因此它的窗口是隐藏的,当其他地方需要内存时,它通常会被系统杀死。

要回答您的问题,您的MainActivity将在新活动启动后立即停止,

您应该阅读活动生命周期: https://developer.android.com/reference/android/app/Activity.html