У меня есть вещательный приемник внутри службы переднего плана. Я обнаруживаю входящий вызов и выполняю какой-либо метод всякий раз, когда он прерывается, но проблема в том, что метод вызывает сам себя более одного раза и вызывает дублирование данных.
Я хочу знать, почему мой широковещательный приемник вызывает себя чаще чем 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
Это результат только одного входящего звонка, и этот звонок заканчивается. Дайте мне знать, что не так с этим кодом, и, пожалуйста, предоставьте решение.
Заранее спасибо!