广播接收器即使在应用程序崩溃时也能正常运行

时间:2017-11-16 13:12:57

标签: android android-broadcastreceiver

问题场景:我有一个带有静态注册广播接收器的Android应用程序,其注册AIRPLANE_MODE的意图过滤器工作正常。当我打开飞机模式时,会显示一个Toast。         当我强制停止我的应用程序时,广播接收器不起作用,这是预期的结果。但是现在当我的应用程序崩溃时,广播接收器仍在显示吐司。所以,我的问题是为什么我的广播接收器甚至在应用程序崩溃时工作,而当我强制停止应用程序时它被销毁。如果有人能够清楚地了解App Force Stop场景,那将非常有用。

1 个答案:

答案 0 :(得分:0)

在您的应用中,您有4分可以启动您的应用:BroadcastReceiverActivityService ContentProvider

因此,如果您在AndroidManifest中注册BroadcastReceiver,即使您使用强制停止应用程序,您实际上也会在BroadcastReceiver中获得回调,因为它是启动应用程序的重点。您实际上可以通过以下代码以编程方式禁用BroadcastReceiver:

ComponentName component = new ComponentName(context, YourReceiver.class); 

//Disable BroadcastReceiver
context.getPackageManager().setComponentEnabledSetting(component,  PackageManager.COMPONENT_ENABLED_STATE_DISABLED , PackageManager.DONT_KILL_APP);

//Enable BroadcastReceiver
context.getPackageManager().setComponentEnabledSetting(component, PackageManager.COMPONENT_ENABLED_STATE_ENABLED , PackageManager.DONT_KILL_APP);