0

如果用户在我的活动处于前台时重新启动他们的手机,则在手机重新启动后,活动会再次自动弹出。我不希望发生这种情况,因为我传递给活动的任何额外数据都没有保存,因此活动没有正确的显示。

显然,活动甚至在我的具有意图过滤器的 BroadcastReceiver 开始之前就android.intent.action.BOOT_COMPLETED开始了。

我将如何防止活动在手机启动时自动启动?

编辑:我将android.intent.category.HOME意图过滤器中的类别用于我的活动,这显然是它在重新启动时启动的原因。

4

1 回答 1

1

ACTION_SHUTDOWN设备关闭时,广播应该会消失。我说“应该出去”,因为它假设有一个有序的关闭。如果用户最终按住 POWER 按钮约 10 秒,或者弹出电池,我会认为这ACTION_SHUTDOWN不是广播。

要控制组件(例如活动)是否可用,您可以使用PackageManagersetComponentEnabledSetting()。禁用的组件无法运行并且通常是不可见的(例如,禁用的应用小部件<receiver>不会显示在应用小部件选择器中)。

理论上,您可以将这两者结合起来。但是,即使在最好的情况下,我也会假设ACTION_SHUTDOWN行为是有时间限制的(所以要快点),并且您需要处理“无序”关闭场景。

于 2012-08-09T16:57:44.257 回答