我应该在哪里初始化监听器?

时间:2018-10-30 09:47:26

标签: android phone-state-listener

此刻,我从一个活动(在其PhoneStateListener方法中)初始化了一个侦听器(扩展了onCreate())。

private static boolean listening = false;

@Override
protected void onCreate(Bundle savedInstanceState) {

    //...

    if (!listening) {
        MyPhoneStateListener phoneListener = new MyPhoneStateListener(getApplicationContext());
        TelephonyManager telephonyManager = (TelephonyManager) getApplicationContext().getSystemService(Context.TELEPHONY_SERVICE);
        telephonyManager.listen(phoneListener, PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);

        listening = true;
    }

但是,我意识到我还应该在重启设备时初始化该侦听器,所以我也应该从启动完成的BroadcastReceiver开始。

然后如何避免让该侦听器的两个实例运行? (我也想知道,如果该活动未运行(后台应用程序?切换的活动?),我的监听器将始终起作用吗?)

1 个答案:

答案 0 :(得分:0)

您可以创建一个Class ListenerUtil,为其中的侦听器添加一个静态变量,然后您可以在Activity和BroadcastReceiver中访问该静态变量。最后,如果您的活动没有被破坏,则侦听器将始终可以工作。