【发布时间】:2013-07-03 23:59:09
【问题描述】:
我正在通过广播接收器监控手机状态,为此我在接收器的 onReceive 中注册了一个 PhoneStateListener。现在,如果用户想要禁用此功能,我会禁用广播接收器,但侦听器会继续运行,并且会通知我手机状态。如何取消注册在广播接收器中注册的 PhoneStateListener?
【问题讨论】:
标签: android
我正在通过广播接收器监控手机状态,为此我在接收器的 onReceive 中注册了一个 PhoneStateListener。现在,如果用户想要禁用此功能,我会禁用广播接收器,但侦听器会继续运行,并且会通知我手机状态。如何取消注册在广播接收器中注册的 PhoneStateListener?
【问题讨论】:
标签: android
正如documentation 所说:
要取消注册侦听器,请传递侦听器对象并将 events 参数设置为 LISTEN_NONE (0)。
例如:
telephonyManager.listen(myListener, PhoneStateListener.LISTEN_NONE);
【讨论】:
BroadcastReceiver 的生命周期很短。您需要将myListener 的引用存储在一个静态变量中,这样它就不会消失。确保在取消注册监听器后将静态变量设置为null,以免发生内存泄漏。