不要保持活动 - 它的用途是什么?

Seb*_*ano 39 android android-activity

标题非常明显.我理解这个开发人员选项的作用.

不明白的是以下几点:

  1. 为什么首先引入该选项?
  2. 在框架多年来所见的所有变化之后,它仍然有用吗?

我很想知道这个选项背后的原因.

Nic*_*tto 35

我相信它是用于调试目的的功能.

来自Titanium doc:

不要在"开发人员选项"菜单下保留活动.启用此选项后,Android操作系统将在停止后立即销毁该活动.它旨在帮助开发人员调试他们的应用程序.例如,它可以模拟Android因内存压力而在后台杀死活动的情况.在正常使用中,建议不要启用此选项,因为这可能会导致应用程序出现意外问题,例如冻结,强制关闭和重新启动.

听起来它基本上有助于确定性地测试当应用程序由于任何原因(内存不足等)关闭它时应用程序的行为.

所以,这回复了第1点.第2点是:是的,我猜:)

编辑:进一步的参考

  • `例如,它可以模拟Android由于内存压力而杀死后台活动的情况`。这是真的吗?我的意思是,当内存面临压力时,整个进程都会被终止,而不是单个或几个活动。 (2认同)

Kev*_*ede 18

Android框架可能会在后台或后台堆栈中破坏您的活动,您应该编写活动,以便在发生这种情况时它们正常运行.具体取决于活动的作用,但通常包括实施onSaveInstanceState(...)和恢复以前的任何状态onCreate(...).

"不要保持活动"开发人员选项只是改变框架的行为,因此当它进入后台或后台时它总是会破坏你的活动.这允许您测试您的活动如何响应通常罕见的事件.

另一个答案中引用的链接说:

在正常使用中,建议不要启用此选项,因为这可能会导致应用程序出现意外问题,例如冻结,强制关闭和重新启动.

这是不正确的.如果您的活动写得正确,那么打开"不要保持活动"的唯一效果应该是(可能)从不断保存和恢复持久状态的电池和CPU使用率略高.任何显示"意外问题"或强制关闭的应用程序在此选项打开时都会被破坏并需要修复.作为开发人员,我习惯性地一直打开"不要保持活动".我见过很多有缺陷的应用程序,甚至是谷歌的一些应用程序.但它从来没有引起重启,我认为没有任何办法可以.

  • 仅供参考,活动仅由系统销毁[当流程被销毁时](https://commonsware.com/blog/2011/10/03/activities-not-destroyed-to-free-heap-space.html).核心安卓团队的Dianne Hackborn清除了常见的误解. (3认同)