android - 如果在 Android 中不再可见,则 Activity 被系统杀死的问题

标签 android android-layout android-intent android-emulator android-widget

我的应用程序中有 Activity (A、B、C)。当我启动应用程序时 Activity A:

  A:onCreate()
  A:onStart()
  A:onResume()

我正在使用 Intent 调用第二个 Activity (A -> B):

  A:onPause()
  B:onCreate()
  B:onStart()
  B:onResume()
  A:onStop()

然后我点击“主页”按钮所以应用程序进入后台:现在

  B:onPause()
  B:onStop()

1 或 2 小时后,我再次进入我设备的主页并单击它运行的应用程序图标:

 B:onDestroy()
 A:onRestart()
 A:onStart()
 A:onResume()

但我需要去哪一个 Activity 我就这样退出了,

B:onRestart()
B:onStart()
B:onResume()

我读过一些文章,它说 Activity 因为不再可见而被系统杀死。有没有可能解决我的问题...

提前致谢...

最佳答案

你可能会混淆两个不同的东西:

  1. 如果 Android 需要内存,它不会终止 Activity 。它所做的是终止 Activity 正在运行的整个进程。一般来说,这意味着 Android 会终止您在这种情况下的所有 Activity 。但是,它会记住 Activity 堆栈,当用户返回应用程序时,Android 将创建一个新进程,然后重新创建每个 Activity (根据需要依次创建)。它首先重新创建 Activity 堆栈顶部的 Activity (即:用户离开应用程序的位置)。

  2. Android 假定如果用户长时间离开任务(我认为这大约是 30 分钟),那么他就不再对该任务感兴趣,并且有记住用户在该任务的 Activity 堆栈中的位置是没有意义的,因为他可能不再关心了。在这种情况下,发生的情况是,当用户返回任务(或重新启动该任务中 Activity 堆栈顶部的应用程序)时,Android 只是将任务清除回根 Activity .这具有应用程序看起来重新开始的效果。这是期望的(记录在案的行为)。

您想要做的是阻止 Android 清除情景 #2 中的任务。你通过添加来做到这一点

    android:alwaysRetainTaskState="true"

<activity> 根 Activity 的标签(即:启动您的应用程序的 Activity ,带有 ACTION_MAINCATEGORY_LAUNCHER 的 Activity )。

关于android - 如果在 Android 中不再可见,则 Activity 被系统杀死的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11665483/

相关文章:

java - 安卓OpenGL ES 2.0 : Setting Unique Colors for Objects with same Fragment Shader

android - 带有 android 和 maven-android-plugin 的 Cloudbees

java - 安卓定位问题

android - 如何在 Android 中使用自定义相机捕获和保存图像?

android-layout - 容器在 Android Studio 预览版中扩展

android - 控制 TextToSpeech (TTS) 的速度

android - 屏幕尺寸和布局

java - 尝试在 Android Studio 上启动我的第三个 Activity 时被重定向到初始 Activity

android - 如何在不打开其他使用 "geo"方案的应用程序的情况下打开 Google map ?

android - 将浏览器作为 Intent 打开,但不要将其保留在 Activity 堆栈中