繁体   English   中英

不要保持活动 - 这是为了什么?

[英]Don't keep activities - What is it for?

标题是不言自明的。 我了解此开发人员选项的作用。

不明白的是以下几点:

  1. 为什么首先引入该选项?
  2. 框架经历了这么多年的变化,它还有用吗?

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

我相信这是用于调试目的的功能。

钛文档

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

听起来它基本上有助于确定性地测试您的应用程序在操作系统因任何原因(内存不足等)关闭时的行为方式。

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

编辑:进一步参考

Android 框架可能会在任何时候在后台或后台销毁您的 Activity,您应该编写您的 Activity,以便在发生这种情况时它们的行为正确。 具体需要什么取决于活动做什么,但它通常包括实现onSaveInstanceState(...)和恢复任何以前的状态onCreate(...)

“不保留活动”开发人员选项只是更改框架的行为,因此当它进入后台或后台时,它总是会破坏您的活动。 这允许您测试您的活动如何响应通常很少发生的事件。

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

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

这是不正确的。 如果您的 Activity 编写正确,那么打开“不保留活动”的唯一效果应该是(可能)通过不断保存和恢复持久状态而略微提高电池和 CPU 使用率。 任何在此选项打开时表现出“意外问题”或强制关闭的应用程序都已损坏,需要修复。 作为一名开发人员,我习惯性地让“不要保持活动”一直处于开启状态。 我见过很多有问题的应用程序,甚至是 Google 自己的一些应用程序。 但它从未导致重新启动,我认为没有任何办法。

启用此功能后,我至少遇到了两个问题:

1) 我收到错误“由于内存不足而无法完成之前的操作”,该错误阻止使用 Chrome 将任何附件上传到网站,但不能使用 Firefox。 我在其他地方发现启用“不要保持活动打开”选项可能是问题所在 - 确实如此。

2) 我无法将文件移动到 SD 卡。 禁用“不要保持活动打开”选项解决了这个问题。

在其他地方也发现它通常会减慢速度,因为缓存受到损害。

有时,我已移至 SD 卡的应用程序会突然“变灰”并且无法访问。 重新启动解决了这个问题,但变得很烦人。 判断这是否是此“功能”引起的另一个问题还为时过早。

这些问题(以及 Zoom 中麦克风的问题)都是在上个月开始的。 我不知道 DKAO 是如何启用的,但就我而言,这是一个禁忌。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM