У меня есть BaseActivity и несколько Деятельностей , расширяющих его.
BaseActivity имеет статическую переменную, которая делает его общим для потомка Деятельности (все они совместно используют один и тот же экземпляр).
Статическая переменная инициализируется ТОЛЬКО MainActivity (что расширяет BaseActivity ).
MainActivity явно регистрируется для BroadcastReceiver .
BroadcastReceiver изменяет значения в статической переменной.
Я хочу убедиться, что если система уничтожена MainActivity (например, для нехватки памяти), статическая переменная будет сброшена и установлена в ноль.
Как я уже сказал, MainActivity делит статическую переменную с другими Деятельностями , и он владеет BroadcastReceiver , и он инициализирует статическую переменную.
Без BroadcastReceiver данные статической переменной будут ненадежными.
Теперь у вас есть весь сценарий. Давайте разберемся с вопросами:
Каков жизненный цикл разделяемой статической переменной в этом случае?
Уничтожает ли Android (в случае нехватки памяти) отдельные действия или уничтожает все мое приложение (все действия)?
- Если оно полностью уничтожит мое приложение и сбросит статическую переменную, которая была бы приемлемой, я беспокоюсь, что она уничтожит только MainActivity и отменит регистрацию BroadcastReceiver , но при этом сохранит статическую переменную (Что станет ненадежным).
Если Android может уничтожить MainActivity в одиночку и сохранить статическую переменную, как я могу получить уведомление или узнать о том, что в следующий раз MainActivity запустится чтобы я мог перезагрузить значения внутри статической переменной?
К сожалению, я не могу положиться на onDestroy()
в MainActivity , чтобы установить статическую переменную в ноль, поскольку вы знаете, что она не гарантированно будет вызываться в случае, если Android уничтожит активность в нехватке памяти.