【问题标题】:Unregister PhoneStateListener from BroadcastReceiver从 BroadcastReceiver 注销 PhoneStateListener
【发布时间】:2013-07-03 23:59:09
【问题描述】:

我正在通过广播接收器监控手机状态,为此我在接收器的 onReceive 中注册了一个 PhoneStateListener。现在,如果用户想要禁用此功能,我会禁用广播接收器,但侦听器会继续运行,并且会通知我手机状态。如何取消注册在广播接收器中注册的 PhoneStateListener?

【问题讨论】:

    标签: android


    【解决方案1】:

    正如documentation 所说:

    要取消注册侦听器,请传递侦听器对象并将 events 参数设置为 LISTEN_NONE (0)。

    例如:

        telephonyManager.listen(myListener, PhoneStateListener.LISTEN_NONE);
    

    【讨论】:

    • 我已经试过了,它给出了空指针异常。我认为这是由于创建听众的广播接收器的生命。所以当我注销它时,广播接收器不再存在。因此空指针异常
    • BroadcastReceiver 的生命周期很短。您需要将myListener 的引用存储在一个静态变量中,这样它就不会消失。确保在取消注册监听器后将静态变量设置为null,以免发生内存泄漏。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-13
    • 1970-01-01
    相关资源
    最近更新 更多