Вопрос

Я разрабатываю для 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, этот случай может произойти, если нужно запустить другое приложение, а в системе недостаточно памяти.

Редактировать:Что ж, похоже, в этом случае система все равно вызовет этот метод.Я уже не совсем уверен в рабочем процессе...

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top