让活动保持活力

时间:2012-03-26 20:01:54

标签: android android-activity lifecycle

我的应用程序中有一系列活动,以活动“A”开头,后跟“B”,“C”,“D”和“E”。活动“A”,“B”,“C”和“D”是透明活动(透明主题),而“E”是不透明的。

要求是活动“A”不应该完成。我通过博客http://www.skill-guru.com/blog/2011/01/13/android-activity-life-cycle/阅读了该文章

  1. 如果活动失去焦点但仍然可见(即新的活动 非全尺寸或透明的活动专注于您的 活动),暂停了。
  2. 如果一项活动被另一项活动完全遮挡,那就是 停止。
  3. 在用户浏览活动“D”之前,不调用活动“A”的onStop(),但在调用活动“E”时调用它。

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

1 个答案:

答案 0 :(得分:4)

  

要求是活动“A”不应该完成。

通过致电finish()完成活动。这通常发生在用户按下BACK按钮时。

  

在用户浏览活动“D”之前,不调用活动“A”的onStop(),但在调用活动“E”时调用它。

正确。

  

无论如何我们可以让活动“A”在活动堆栈中运行吗?

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

  

在Application对象中保留Activity的静态引用是否是一个很好的解决方案,以便框架不会杀死它?

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

  

我可以采取哪些预防措施,以免“A”被杀?

请勿致电finish()

  

有没有办法可以获得通知,如果它被框架杀死,以便我可以重新创建它?

如果活动结束,将使用onDestroy()调用您的活动。如果流程终止,这可能会也可能不会发生,具体取决于当时触发终止和系统状态的原因。