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

12
HTC Android developers contest, Киев, 15 мая 2010 года Разработчик Java для мобильных Валентин Коновалов Настоящий жизненный цикл приложений под Андроид

Upload: htc-android-developers-contest

Post on 16-Jun-2015

3.281 views

Category:

Technology


2 download

TRANSCRIPT

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

HTC Android developers contest, Киев, 15 мая 2010 года

Разработчик Java для мобильных Валентин Коновалов

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

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

1. Классические грабли• Утечки памяти

• Инициализация частей программы только при первом запуске

• Потоки и сервисы продолжают работать после выхода из программы

• Неработоспособность программы после второго запуска

2

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

2. Официальный жизненный цикл Activity

3

Слабо объясняет что происходит

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

Запущен Не запущен

3. Жизненный цикл процесса

4

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

4. Состав процесса

5

FirstActivity LastActivitySecondActivity

FirstService

SecondService

FirstDataProvider SecondDataProvider

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

5. Стек Activity-объектов

6

Класс FirstActivity

1й объект FirstActivity

… объект FirstActivity

Последний объект FirstActivity

Может быть виден на экране

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

6. Неочевидный “домик”

7

При нажатии на кнопку “Домик” приложение сворачивается, но развернуться обратно может не то, что свернули

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

7. Только один экземпляр Activity?

8

Установить флаг android:launchMode="singleInstance”

ТАК ДЕЛАТЬ НЕ НАДО

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

8. Жизненный цикл Activity

9

Нет в памяти

Класс в памяти

Объект(ы) в памяти

Объект виден на экране

clinit()

Конструктор + onCreate() onResume()

onPause()finalize()

--

-- --

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

9. А где onDestroy???

10

Его нет в жизненном цикле, так-как:

1. onDestroy не означает уничтожение Activity2. onDestroy не всегда вызывается

onCreate() onDestroy()

Thread

Экземпляр Activity

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

10. Как освобождать память?

11

1. Все ссылки на Activity и на его объекты нужно делать null в onPause

2. Все потоки и сервисы, принадлежащие Activity, нужно останавливать в onPause

3. Все не-static ресурсы желательно удалять в onPause

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

Разработчик Java для мобильных

119021, Россия, Москва,ул. Льва Толстого, 16.

+7 (495) 739-00-00+7 (495) 739-70-70 — факс

[email protected]

Валентин Коновалов

Вопросы?