首页 > 解决方案 > 什么时候可以安全地使用 DONT_KILL_APP 禁用组件?

问题描述

我需要以编程方式禁用BroadcastReceiver接收BOOT_COMPLETED操作的 a 。下面的代码解决了这个问题:

packageManager.setComponentEnabledSetting(broadCastReceiverName, 
    PackageManager.COMPONENT_ENABLED_STATE_DISABLED, 
    PackageManager.DONT_KILL_APP);

我使用该DONT_KILL_APP标志来防止系统在更改组件配置后杀死应用程序。问题是该标志的文档DONT_KILL_APP包含以下摘录:

Be careful when you set this since changing component states can make the containing application's behavior unpredictable.

文本非常模糊,并没有明确说明会发生什么问题或正确的用途是什么。我测试了禁用BroadcastReceiveronReceive()并且没有问题。从 a 中禁用Activity也可以。让我不确定这个解决方案的原因是文档没有描述使用标志的安全方法。它还说行为是不可预测的。它可能在本地工作,但在生产中存在问题。

有没有人有更多关于使用这个标志的细节,在什么情况下使用它是安全的?

标签: androidandroid-activitybroadcastreceiverandroid-manifest

解决方案


推荐阅读