如果用户在我的活动位于前台时重新启动手机,则在手机重新启动后,活动会自动再次弹出。我不希望这种情况发生,因为我传递给活动的额外数据都没有保存,因此活动没有正确的显示。
显然,即使在具有android.intent.action.BOOT_COMPLETED
的意图过滤器的BroadcastReceiver开始之前,活动也已开始。
如何防止手机启动时自动启动活动?
修改:我在我的意图过滤器中使用android.intent.category.HOME
类别来查看我的活动,这显然是重启时启动的原因。
答案 0 :(得分:1)
当设备关闭时,ACTION_SHUTDOWN
广播应该会消失。我说“应该出去”,因为它假定有序关闭。如果用户最后按住POWER按钮约10秒钟,或弹出电池,我会认为ACTION_SHUTDOWN
没有播出。
要控制某个组件(例如活动)是否可用,您可以使用PackageManager
和setComponentEnabledSetting()
。禁用的组件无法运行且通常不可见(例如,已停用的应用小部件的<receiver>
将不会显示在应用小部件选择器中。)
理论上,你可以将这两者结合起来。然而,即使在最好的时候,我也会认为ACTION_SHUTDOWN
行为是相当有时间限制的(因此请快速进行),并且您需要处理“无序”关机场景。