取消注册Android清单中定义的广播接收器

时间:2013-07-03 11:14:54

标签: android broadcastreceiver android-manifest

我在应用程序的清单文件中注册了一个广播接收器,如:

<receiver android:name="com.example.devicecommunication.MainActivity$proximityOffReceiver" android:enabled="true"> 
        <intent-filter> 
            <action android:name="com.example.devicecommunication.PROXIMITYOFF" /> 
        </intent-filter> 
</receiver> 

我在MainActivity中定义了接收器(因为我希望即使活动不在前台也要执行接收器)。我看到了链接Android - how to unregister a receiver created in the manifest?。但是,如果我应该在每次退出应用程序或按下后退按钮时显式取消注册接收器,我会感到困惑吗?提前致谢!

3 个答案:

答案 0 :(得分:2)

  

我已经在MainActivity中定义了接收器(因为我希望即使活动不在前台也能执行接收器)。

由于proximityOffReceiver是一个静态内部类,因此您在MainActivity中拥有它并不意味着“当活动不在前台时”会影响proximityOffReceiver

  

但是,如果我应该在每次退出应用程序或按下后退按钮时明确取消注册接收器,我会感到困惑吗?

该问题的接受答案指出,您没有“取消注册”在清单中注册的接收者。您可以启用或禁用接收器。

因此,在您的情况下,您可以在希望它运行时启用接收器,并在您不希望它运行时禁用接收器。在你的情况下,你似乎希望它一直在运行,在这种情况下你可能永远不会禁用它。

答案 1 :(得分:1)

是注册还是取消注册接收器取决于您的使用情况。每次退出应用程序/预设后退按钮时,都无需显式取消注册接收器。

答案 2 :(得分:1)

如果您希望活动是否正在运行,您应该只在接收器中放置接收器。如果您只想在启动应用程序后打开它,那么它应该由您的活动在代码中注册。除非你有一个想要几乎所有时间都在接收的接收器并且只在短时间内关闭它,否则一旦设置在清单中就没有理由取消注册它。