我希望有一个查询,如果有人可以回答它:Do not keep activities
在开发者选项测试Android移动应用程序时要检查的选项。
我在我的应用程序中使用它,发现当我在android中打开Do not keep activities
时,我的应用程序行为不当并且崩溃了。
我的问题很少:
1: How much this option will affect mobile applications?
2: What exactly does this do?
这听起来像是一个应用程序杀手,我注意到在开发者选项中有一个框,上面写着不要保留活动 - destroy every activity as soon as the user leaves it
。
这是否会在我的应用中创建任何正面或负面的功能?
这是否意味着如果我打开一个应用程序,一旦我离开它,它实际上关闭了该应用程序,我不会在任务管理器中看到它手动杀死它?如果是这样,保持低RAM使用率不是一件好事吗?
在保持Do not keep activities
的同时使用它的优点和缺点是什么,请分享它的经验。
答案 0 :(得分:11)
此选项会对移动应用程序产生多大影响?
如果写得好,这个选项不会影响他们。
这到底是做什么的?
如果启用此选项,则仅使用方法onSaveInstanceState
保留活动中的变量
当你去另一个活动或应用程序进入后台时将保存。所有其他变量将立即删除。
当此选项关闭时,可能会保留这些变量
这是否意味着如果我打开一个应用程序,一旦我离开它,它实际上关闭了该应用程序,我不会在任务管理器中看到它手动杀死它?
不,这意味着将删除所有未保存的变量。在示例中按主页按钮。
这是否会在我的应用中创建任何正面或负面的功能?
不,它只能帮助正确开发应用程序。它有助于预测意外情况。
答案 1 :(得分:3)
不要保持活动纯粹是一个开发人员选项,可以帮助您检查是否
2处理内存不足的情况适当地(在这种情况下的活性会被破坏)。̶
编辑:此选项不会模拟低内存情况。当设备遇到内存不足时,系统可能会通过调用Finish()来询问活动是否丢弃,或者它可能会继续并完全终止该进程,如评论所示。
启用此选项进行开发仍然很好。您必须正确编码onSaveInstanceState()
和onRestoreInstanceState()
方法。通过执行此操作,即使进程被终止,当用户导航回此活动时,也会使用onSaveInstanceState(Bundle)
方法中保存的savedInstanceState调用onCreate()。
答案 2 :(得分:1)
优势:
开发人员可以检查其应用程序的异常行为并修复low memory - framework kills the application
DISADVANTAGE :
如果用户在不知不觉中启用了此选项,则设备将运行缓慢,并且将在其设备上的用户导航中重新创建每个活动。这将妨碍用户工作
关于此选项的使用情况,xda developer forum给出了非常好的答案
答案 3 :(得分:0)
作为对上述答案的补充是另一个,从第一眼劣势看不到您可以使用此选项测试仅活动销毁/重新播放问题,但不是由于内存不足或其他系统条件导致应用程序重新创建的整个过程,因为所有独立于活动内存的都停留在其中。
想象一下,你有一些 singleton ,你的类依赖于它们。在系统杀死app之后,如果你没有自己实现恢复,你的单身人士也将被清除并恢复到初始状态。所以,尽管您的活动视图状态和&如果onSaveInstanceState
& onRestoreInstanceState
已正确实施,即使在特定屏幕上,也无法保证恢复后的应用行为正确无误。应该考虑这个
因此,要测试这样的完整案例,您应该手动停止应用程序,但不要将其从任务管理器中删除。最简单的方法 - 在Android工作室停止红色方块按钮。然后再打开应用程序。
答案 4 :(得分:0)
Android 操作系统具有此属性,可以清除在后台运行的活动如果设备内存不足,则仅优先考虑在顶部运行的活动。
Do not keep activities
旁边的选项 Developer options
允许开发人员轻松复制相同的场景。
理想情况下,开发良好的 Android 应用程序应该处理 onSaveInstanceState
和 onRestoreInstanceState
保存和恢复所有活动的局部变量。
在官方 Android 开发者网站 here 中提供了更多详细信息。
答案 5 :(得分:-1)
“不要保持活动”的优势在于它在开始杀死应用程序的不同部分时模拟系统内存不足的情况。您的应用必须保持这种情况。缺点是,当没有办法为服务模拟时,这个选项有点严格,只能杀死活动