问题场景:我有一个带有静态注册广播接收器的Android应用程序,其注册AIRPLANE_MODE的意图过滤器工作正常。当我打开飞机模式时,会显示一个Toast。 当我强制停止我的应用程序时,广播接收器不起作用,这是预期的结果。但是现在当我的应用程序崩溃时,广播接收器仍在显示吐司。所以,我的问题是为什么我的广播接收器甚至在应用程序崩溃时工作,而当我强制停止应用程序时它被销毁。如果有人能够清楚地了解App Force Stop场景,那将非常有用。
答案 0 :(得分:0)
在您的应用中,您有4分可以启动您的应用:BroadcastReceiver,Activity,Service, 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);