我的应用程序中有一系列活动,从活动"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“时才调用活动”D“。
我们是否可以在活动堆栈中保持活动"A“的运行?在应用程序对象中保留活动的静态引用,这样框架就不会扼杀它,这是一个很好的解决方案吗?我可以采取什么预防措施使"A“不被杀死?有什么方法可以让我得到通知,如果它被框架扼杀了,我就可以重新创建它了吗?
发布于 2012-03-26 20:11:07
的要求是活动"A“不应该完成。
一个活动通过调用finish()完成。这通常发生在用户按后退按钮时。
活动"A“的onStop()直到用户浏览到活动"D”才被调用,但是在调用活动"E“时调用它。
对,是这样。
是否可以让活动"A“在活动堆栈中运行?
它在活动堆栈中“运行”(对于“运行”的任何合理定义),直到您调用finish()时,用户按回,或者进程被终止。onStop()对此没有任何影响。
是一个很好的解决方案,在应用程序对象中保留活动的静态引用,这样框架就不会扼杀它吗?
不,因为这不会有帮助的。该活动将保留在内存中,直到您调用finish()、用户按回或进程终止为止。
,我能采取什么预防措施使"A“不被杀死?
不要调用finish()。
是否有一种方法,如果它被框架所扼杀,我就可以得到通知,以便我可以重新创建它?
如果您的活动完成了,将用onDestroy()调用它。如果进程被终止,这种情况可能发生,也可能不会发生,这取决于当时触发终止的原因和系统的状态。
https://stackoverflow.com/questions/9878924
复制相似问题