我的应用程序中有一系列活动,以活动“A”开头,后跟“B”,“C”,“D”和“E”。活动“A”,“B”,“C”和“D”是透明活动(透明主题),而“E”是不透明的。
要求是活动“A”不应该完成。我通过博客http://www.skill-guru.com/blog/2011/01/13/android-activity-life-cycle/阅读了该文章
在用户浏览活动“D”之前,不调用活动“A”的onStop(),但在调用活动“E”时调用它。
无论如何我们可以让Activity“A”在Activity堆栈中运行吗?在Application对象中保留Activity的静态引用是否是一个很好的解决方案,以便框架不会杀死它?我可以采取什么预防措施,以免“A”被杀?有没有办法,如果它被框架杀死,我可以得到通知,以便我可以重新创建它?
答案 0 :(得分:4)
要求是活动“A”不应该完成。
通过致电finish()
完成活动。这通常发生在用户按下BACK按钮时。
在用户浏览活动“D”之前,不调用活动“A”的onStop(),但在调用活动“E”时调用它。
正确。
无论如何我们可以让活动“A”在活动堆栈中运行吗?
在活动堆栈中“正在运行”(对于“正在运行”的任何合理定义),直到您调用finish()
,用户按BACK或进程为止被终止。 onStop()
对此没有影响。
在Application对象中保留Activity的静态引用是否是一个很好的解决方案,以便框架不会杀死它?
不,因为它没有帮助。活动将保留在内存中,直到您调用finish()
,用户按BACK或进程终止为止。
我可以采取哪些预防措施,以免“A”被杀?
请勿致电finish()
。
有没有办法可以获得通知,如果它被框架杀死,以便我可以重新创建它?
如果活动结束,将使用onDestroy()
调用您的活动。如果流程终止,这可能会也可能不会发生,具体取决于当时触发终止和系统状态的原因。