系统可以销毁属于前台任务的已停止的活动吗?

时间:2017-05-31 14:01:40

标签: android android-activity

来自official doc

  

当活动A启动活动B时,活动A停止,但是   系统保留其状态(例如滚动位置和输入的文本   形式)。如果用户在活动B中按下后退按钮,   活动A恢复其状态恢复。

此时不会销毁活动A.但是,如果一个人设置开发人员选项"不要保持活动"在,活动A将被销毁,当用户按下活动B中的后退按钮时,将重新创建活动A.

同样来自official doc

  

注意:可以在后台同时保存多个任务。然而,   如果用户同时运行许多后台任务,那么   系统可能会开始破坏后台活动   恢复内存,导致活动状态丢失。

据我所知,"不要保持活动"是有用的,因为它有助于重新创建操作系统在后台处理应用程序进程的情况。

当活动A在前景中可见时,活动A是否被活动A破坏,是否有可能(#34;不保持活动"关闭)?

4 个答案:

答案 0 :(得分:1)

前台任务的进程终止的一种情况是,在多窗口模式下,您的任务是在一个窗口中,而另一个窗口中的用户是否进入“设置”并删除了一些权限授予。然而,在那一点上,整个过程都消失了;活动B在前景中可见,直到那时为止,但随后就消失了。

并且,如果设备在活动B位于前台时经历配置更改,则按BACK或以其他方式导航到活动A,默认情况下,活动A将被销毁并重新创建......但此时,活动B为否在前景中更长。

当然,可以通过调用它上面的finish()来销毁活动A.

因此,鉴于我对你的问题的解释,答案是"不,如果你没有打电话给finish(),活动A不会被销毁,而活动B仍然在前台"。

答案 1 :(得分:1)

是吗?不,是否允许?是。

Android 目前在不破坏整个过程的情况下不会破坏Backstack中的活动。但是,文档表明它可以。由于Android开发人员没有表现出任何关于进行更改导致大量破坏不符合文档指南的应用程序(例如,NetworkOnMainThreadException的介绍)的内容,我认为严格测试是一种很好的做法你的应用程序“不要保持活动。”

答案 2 :(得分:0)

启动意图后,执行完成()。这将运行活动的onDestroy方法。

答案 3 :(得分:0)

  

活动A是否有可能(关闭“不要保持活动”)   当活动B在前景中可见时,被OS破坏了吗?

是的,只要Activity不在前台;然后,由于内存不足,将有机会被操作系统杀死。

在开发过程中,模拟此行为的方式(您的活动A被操作系统杀死)是在开发人员选项中启用 不要保留活动 。 / p>