У меня есть два вида деятельности; скажем, 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? Должно быть какое-то решение для этой проблемы.
Пожалуйста, помогите мне.