Чего я хочу добиться, так это дать пользователю кнопку «Начать прием трансляции», а другую - «Остановить прием трансляции».
Я регистрирую BroadcastReceiver для «android.provider.Telephony.SMS_RECEIVED»."intent (функция« Начать прием трансляции »):
incomingSmsReceiver = new IncomingSmsReceiver();
IntentFilter filter = new IntentFilter();
filter.addAction("android.provider.Telephony.SMS_RECEIVED");
getApplicationContext().registerReceiver(incomingSmsReceiver, filter);
Затем я использую unregisterReceiver () для« Прекращения приема трансляции »:
getApplicationContext().unregisterReceiver(incomingSmsReceiver);
Как вы можете видеть, он использует ту же ссылку (private static BroadcastReceiver incomingSmsReceiver;
).
Проблема в следующем:
Это работает нормально, пока процесс моего приложения не завершен.Когда пользователь нажимает «Начать прием трансляции» и после этого мое приложение убивается Android, я теряю ссылку incomingSmsReceiver
(когда я запускаю свое приложение в следующий раз, по умолчанию оно установлено на null
).Пользователь не может прекратить получать широковещательную рассылку, поскольку ссылка теряется.
Как сохранить эту ссылку? И как сделать возможным вызов getApplicationContext().unregisterReceiver(incomingSmsReceiver);
после восстановления процесса приложения на Android