Настоящий жизненный цикл приложений под android
Post on 16-Jun-2015
3.283 Views
Preview:
TRANSCRIPT
HTC Android developers contest, Киев, 15 мая 2010 года
Разработчик Java для мобильных Валентин Коновалов
Настоящий жизненный цикл приложений под Андроид
1. Классические грабли• Утечки памяти
• Инициализация частей программы только при первом запуске
• Потоки и сервисы продолжают работать после выхода из программы
• Неработоспособность программы после второго запуска
2
2. Официальный жизненный цикл Activity
3
Слабо объясняет что происходит
Запущен Не запущен
3. Жизненный цикл процесса
4
4. Состав процесса
5
FirstActivity LastActivitySecondActivity
FirstService
SecondService
FirstDataProvider SecondDataProvider
5. Стек Activity-объектов
6
Класс FirstActivity
1й объект FirstActivity
… объект FirstActivity
Последний объект FirstActivity
Может быть виден на экране
6. Неочевидный “домик”
7
При нажатии на кнопку “Домик” приложение сворачивается, но развернуться обратно может не то, что свернули
7. Только один экземпляр Activity?
8
Установить флаг android:launchMode="singleInstance”
ТАК ДЕЛАТЬ НЕ НАДО
8. Жизненный цикл Activity
9
Нет в памяти
Класс в памяти
Объект(ы) в памяти
Объект виден на экране
clinit()
Конструктор + onCreate() onResume()
onPause()finalize()
--
-- --
9. А где onDestroy???
10
Его нет в жизненном цикле, так-как:
1. onDestroy не означает уничтожение Activity2. onDestroy не всегда вызывается
onCreate() onDestroy()
Thread
Экземпляр Activity
10. Как освобождать память?
11
1. Все ссылки на Activity и на его объекты нужно делать null в onPause
2. Все потоки и сервисы, принадлежащие Activity, нужно останавливать в onPause
3. Все не-static ресурсы желательно удалять в onPause
Разработчик Java для мобильных
119021, Россия, Москва,ул. Льва Толстого, 16.
+7 (495) 739-00-00+7 (495) 739-70-70 — факс
vkonovalov@yandex-team.ru
Валентин Коновалов
Вопросы?
top related