Activity 非前台的生命周期 activity
Activity lifecycle for non-foreground activity
我的应用程序有一个主 activity,偶尔会根据某些用户操作打开另一个 activity(并保留在 activity 堆栈中)。
我的理解是,Android,如果需要,可以决定在主 activity 处于后台时将其杀死,尽管当前可见的主 activity 不会受到伤害。
我很确定我在过去(2-3 年前)见过这种现象。
这里是问题-
- 在什么情况下 Android 可能会决定关闭后台 activity 虽然应用程序在前台?
- 某些特定版本的 Android/vendors 是否比其他版本更有可能做到这一点?
- 如果我没记错的话,在这种情况下可能会或可能不会调用 activity 的 onStop。这个假设对吗?
My understanding is, Android, if needed, can decide to kill the main activity
Android 中没有 main activity
概念。您的应用程序可以作为一个整体被终止,或者一些未使用的元素可以被垃圾收集。
I am pretty sure I have seen this phenomenon
这不是现象,而是正常的 Android 系统行为。
Under what conditions Android might decide to kill the background activity though the app is in foreground?
真的没关系。您需要打扰的是您可以 killed/restarted 并且知道您需要做的就是确保您的数据能够生存。
Does some specific version of Android/vendors have more chances of doing this than the other?
还是一样——没关系。确保您的应用正确处理此类情况,仅此而已。
If I remember correctly, in such cases activity's onStop may or may not be called. Is this assumption right?
不,除非你的进程真的被终止了,而不是垃圾回收。
如果一个 activity 被另一个 activity 完全遮挡,它就会停止。它仍然保留所有状态和成员信息,但是,它不再对用户可见,因此它的 window 被隐藏并且当其他地方需要内存时它经常被系统杀死。
为了回答您的问题,您的 MainActivity 将在您的新 activity 启动后立即停止,
您应该阅读 activity 生命周期:
https://developer.android.com/reference/android/app/Activity.html
我的应用程序有一个主 activity,偶尔会根据某些用户操作打开另一个 activity(并保留在 activity 堆栈中)。
我的理解是,Android,如果需要,可以决定在主 activity 处于后台时将其杀死,尽管当前可见的主 activity 不会受到伤害。 我很确定我在过去(2-3 年前)见过这种现象。
这里是问题-
- 在什么情况下 Android 可能会决定关闭后台 activity 虽然应用程序在前台?
- 某些特定版本的 Android/vendors 是否比其他版本更有可能做到这一点?
- 如果我没记错的话,在这种情况下可能会或可能不会调用 activity 的 onStop。这个假设对吗?
My understanding is, Android, if needed, can decide to kill the main activity
Android 中没有 main activity
概念。您的应用程序可以作为一个整体被终止,或者一些未使用的元素可以被垃圾收集。
I am pretty sure I have seen this phenomenon
这不是现象,而是正常的 Android 系统行为。
Under what conditions Android might decide to kill the background activity though the app is in foreground?
真的没关系。您需要打扰的是您可以 killed/restarted 并且知道您需要做的就是确保您的数据能够生存。
Does some specific version of Android/vendors have more chances of doing this than the other?
还是一样——没关系。确保您的应用正确处理此类情况,仅此而已。
If I remember correctly, in such cases activity's onStop may or may not be called. Is this assumption right?
不,除非你的进程真的被终止了,而不是垃圾回收。
如果一个 activity 被另一个 activity 完全遮挡,它就会停止。它仍然保留所有状态和成员信息,但是,它不再对用户可见,因此它的 window 被隐藏并且当其他地方需要内存时它经常被系统杀死。
为了回答您的问题,您的 MainActivity 将在您的新 activity 启动后立即停止,
您应该阅读 activity 生命周期: https://developer.android.com/reference/android/app/Activity.html