Приемник вещания звонит сам больше 1 раза - PullRequest
1 голос
/ 23 января 2020

У меня есть вещательный приемник внутри службы переднего плана. Я обнаруживаю входящий вызов и выполняю какой-либо метод всякий раз, когда он прерывается, но проблема в том, что метод вызывает сам себя более одного раза и вызывает дублирование данных.

Я хочу знать, почему мой широковещательный приемник вызывает себя чаще чем 1 раз, когда он должен быть вызван только один раз.

Я вставил запись в журнал только для отслеживания получателя Broadcast, и я поделюсь результатом.

Broadcast Receiver-

   BroadcastReceiver b = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {

            k=k+1;
            Log.d("whats", "onreceive: "+k);
            if (intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals(TelephonyManager.EXTRA_STATE_IDLE)) {
                Toast.makeText(context, "Call has ended", Toast.LENGTH_SHORT).show();
                Log.d("whats", "after end: " + k);
            }
        }

    };

    IntentFilter f = new IntentFilter();
    f.addAction(TelephonyManager.ACTION_PHONE_STATE_CHANGED);
    getBaseContext().registerReceiver(b, f);

Здесь идентификатор результата в logcat-

    whats: onreceive: 1     
    whats: onreceive: 2       
    whats: onreceive: 3       
    whats: after end: 3      
    whats: onreceive: 4     
    whats: after end: 4

Это результат только одного входящего звонка, и этот звонок заканчивается. Дайте мне знать, что не так с этим кодом, и, пожалуйста, предоставьте решение.

Заранее спасибо!

...