Удаление наблюдателя на Destroy () Android
-
11-12-2019 - |
Вопрос
Я разрабатываю для Android, используя аннотации Android.У меня есть наблюдаемый объект-одиночка, для которого я хочу добавить активность в качестве наблюдателя.Что-то вроде следующего:
@EActivity(R.layout.myActivity)
public class MyActivity extends SherlockActivity implements Observer {
@Bean //has singleton scope
protected Observerable o;
@Override
public void onCreate() {
o.registerObserver(this);
}
@Override
public void onDestroy() {
o.unregisterObserver(this);
}
//more code
Мой вопрос касается метода уничтожения.Будет ли ситуация, когда Android уничтожит активность во время остановки или паузы? без звоню onDestroy()
?Если это так, то мой Observerable
может сохраняться живая ссылка на действие, которое больше не используется системой, что нехорошо.Или это не так?Если это так, я бы предположил, что в моем списке зарегистрированных наблюдателей будут храниться слабые ссылки на всю мою деятельность, чтобы их можно было автоматически отменить.Это хорошее решение или оно не нужно?
Решение
ОС может завершить ваш процесс без вызова onDestroy, но в противном случае вы можете рассчитывать на вызов onDestroy.Итак, при условии, что ваш Observable находится в том же процессе, что и действие, все в порядке.
Другие советы
В соответствии с жизненным циклом активности на Документация Android, этот случай может произойти, если нужно запустить другое приложение, а в системе недостаточно памяти.
Редактировать:Что ж, похоже, в этом случае система все равно вызовет этот метод.Я уже не совсем уверен в рабочем процессе...