Где я должен инициализировать слушателя? - PullRequest
0 голосов
/ 30 октября 2018

На данный момент я инициализирую слушателя (расширение 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 голосов
/ 30 октября 2018

Вы можете создать Class ListenerUtil, добавить в него статическую переменную для слушателя, а затем получить доступ к статической переменной как в активности, так и в BroadcastReceiver.Finally, если ваша активность не уничтожена, ваш слушатель всегда будет работать.

...