У меня есть два вида деятельности; скажем, A и B. В activity A
есть зарегистрированный вещательный приемник, который прослушивает конкретное событие, которое завершит активность A. Я регистрирую широковещательный приемник в onCreate()
и уничтожаю его в onDestroy()
activity A
.
Для простоты существует button
в activity B
с именем "Destroy Activity A". Когда пользователь нажимает button
, activity A
должен быть уничтожен.
Обычно все это работает бесперебойно без каких-либо проблем, но проблема возникает в следующих сценариях:
1) Предположим, что я нахожусь в activity B
, и я нажимаю клавишу "Домой", чтобы переместить приложение на задний план, а затем, если я использую другие ресурсоемкие приложения, система Android убьет мое приложение на свободную память. Затем, если я открою приложение из недавних задач, activity B
будет возобновлено, и будет вызываться метод onCreate()
, onResume()
etc. Теперь я нажимаю button
, чтобы уничтожить activity A
, но активность A уже была уничтожена, поэтому методы activity A
onCreate()
, onResume()
etc не будут вызываться до тех пор, пока я не перейду к activity A
, нажав кнопку back button
. Таким образом, broadcast receiver
не зарегистрирован для прослушивания события.
2) Такая же проблема возникает, когда пользователь выбрал "Не сохранять действия" из параметров разработчика в настройках устройства.
Я давно искал эту проблему, но я не могу найти правильный ответ. Каков наилучший способ справиться с этим сценарием? Это ошибка Android? Должно быть какое-то решение для этой проблемы.
Пожалуйста, помогите мне.