0

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

<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 - 如何取消注册清单中创建的接收器?. 但是我很困惑是否应该在每次退出应用程序或按下后退按钮时显式注销接收器?提前致谢!

4

3 回答 3

2

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

由于proximityOffReceiver是一个静态内部类,因此您将其包含在内部MainActivity并不意味着“当活动不在前台时”会影响proximityOffReceiver.

但是我很困惑是否应该在每次退出应用程序或按下后退按钮时显式注销接收器?

该问题的公认答案指出,您不会“取消注册”清单中已注册的接收器。您启用或禁用接收器。

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

于 2013-07-03T11:22:06.243 回答
1

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

于 2013-07-03T11:17:58.100 回答
1

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

于 2013-07-03T11:24:50.597 回答