android - 保持 Activity 活力

标签 android android-activity lifecycle

我的应用程序中有一系列 Activity ,从 Activity “A”开始,然后是“B”、“C”、“D”和“E”。 Activity“A”、“B”、“C”和“D”是透明 Activity (透明主题),而“E”是不透明的。

要求是 Activity “A”不应完成。我读了一篇博客http://www.skill-guru.com/blog/2011/01/13/android-activity-life-cycle/其中指出

  1. 如果某个 Activity 失去焦点但仍然可见(即,一个新的 Activity 非全尺寸或透明的 Activity 将重点放在您的顶部 Activity ),已暂停。
  2. 如果一个 Activity 被另一个 Activity 完全遮挡,则 停止了。

Activity “A”的 onStop() 在用户浏览到 Activity “D”之前不会被调用,但在调用 Activity “E”时会调用它。

我们是否可以让 Activity“A”在 Activity 堆栈中运行?在应用程序对象中保留 Activity 的静态引用以便框架不会杀死它是一个很好的解决方案吗?我可以采取什么预防措施来避免“A”被杀死?如果它被框架杀死,有没有一种方法可以收到通知,以便我可以重新创建它?

最佳答案

The requirement is the Activity "A" should not be finished.

Activity 通过调用 finish() 来完成。这通常发生在用户按下“后退”按钮时。

The onStop() of Activity "A" is not called till the user browses to Activity "D" however it is called when Activity "E" is invoked.

正确。

Is there anyway that we can keep the Activity "A" running in the Activity stack?

在 Activity 堆栈中“运行”(对于“运行”的任何合理定义),直到您调用finish()时,用户按下BACK,或者进程终止。 onStop() 对此没有影响。

Is it a good solution to keep a static reference of the Activity in a Application object so that framework does not kill it ?

不,因为这没有帮助。该 Activity 将保留在内存中,直到您调用 finish()、用户按 BACK 或进程终止为止。

What precautions can i take so that "A" is not killed?

不要调用finish()

Is there a way that i can get a notification if this gets killed by framework so that i can recreate it ?

如果您的 Activity 完成,将使用 onDestroy() 调用它。如果进程终止,这种情况可能会发生,也可能不会发生,具体取决于触发终止的原因以及当时系统的状态。

关于android - 保持 Activity 活力,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9878924/

相关文章:

Java - Android - ZIP 文件不断带回 println 需要消息错误

javascript - 为什么APP按后退按钮退出 Titanium

android - DialogFragment 中的 Kotlin 合成和自定义布局

javascript - 如何让我的列表组件在状态更改后呈现?

android - 从一个 Activity 中调用另一个 Activity 中的方法

Android 从 onActivityResult 接收值并将其设置为 Button

android - 开始 Activity 时崩溃

android - Volley - 在同一个 Activity android 中有多个请求

widget - Flutter:小部件和导航的生命周期

android - 重新启动 Activity 中的 fragment