Настоящий жизненный цикл приложений под android

Post on 16-Jun-2015

3.283 Views

Category:

Technology

2 Downloads

Preview:

Click to see full reader

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