dior-dna, anton zvonov, part 1, activities (жизненный цикл)
TRANSCRIPT
![Page 1: DIOR-DNA, Anton Zvonov, Part 1, Activities (жизненный цикл)](https://reader036.vdocuments.mx/reader036/viewer/2022062405/557f2c5ad8b42ad4798b48da/html5/thumbnails/1.jpg)
Excellence inSoftware Engineering
Activity, Жизненный цикл
DIOR-DNA
![Page 2: DIOR-DNA, Anton Zvonov, Part 1, Activities (жизненный цикл)](https://reader036.vdocuments.mx/reader036/viewer/2022062405/557f2c5ad8b42ad4798b48da/html5/thumbnails/2.jpg)
Excellence in Software Engineering 2
ANDROIDСоставные части приложения
![Page 3: DIOR-DNA, Anton Zvonov, Part 1, Activities (жизненный цикл)](https://reader036.vdocuments.mx/reader036/viewer/2022062405/557f2c5ad8b42ad4798b48da/html5/thumbnails/3.jpg)
Excellence in Software Engineering 3
Традиционная модель программирования
СОСТАВНЫЕ ЧАСТИ ПРИЛОЖЕНИЯ ANDROID
• При запуске ОС традиционно используют единую точку входа – main
• ОС загружает код в процесс, а потом приступает к исполнению
Процесс
Приложение
main
![Page 4: DIOR-DNA, Anton Zvonov, Part 1, Activities (жизненный цикл)](https://reader036.vdocuments.mx/reader036/viewer/2022062405/557f2c5ad8b42ad4798b48da/html5/thumbnails/4.jpg)
Excellence in Software Engineering 4
Модель программирования AndroidСОСТАВНЫЕ ЧАСТИ ПРИЛОЖЕНИЯ ANDROID
• Программы Android должны быть рассчитаны на то, что система будет запускать их в различных местах
• Программа – это набор взаимодействующих компонентов
Процесс
Приложение
JVM Dalvik
![Page 5: DIOR-DNA, Anton Zvonov, Part 1, Activities (жизненный цикл)](https://reader036.vdocuments.mx/reader036/viewer/2022062405/557f2c5ad8b42ad4798b48da/html5/thumbnails/5.jpg)
Excellence in Software Engineering 5
Компоненты AndroidСОСТАВНЫЕ ЧАСТИ ПРИЛОЖЕНИЯ ANDROID
Activity
Service
Content Provider
Broadcast Receiver
Решают фоновые задачи, которые могут никак не отображаться на экране. Например, плеер.
Элемент для взаимодействия с пользователем. Обычно целиком занимает экран.
Компоненты, в целом аналогичные вебсервисам. Идентифицируются с помощью URI. (Query, Insert, Update, Delete)
Подписывается на события системы (других приложений). Не имеет своего UI.
![Page 6: DIOR-DNA, Anton Zvonov, Part 1, Activities (жизненный цикл)](https://reader036.vdocuments.mx/reader036/viewer/2022062405/557f2c5ad8b42ad4798b48da/html5/thumbnails/6.jpg)
Excellence in Software Engineering 6
ACTIVITY
![Page 7: DIOR-DNA, Anton Zvonov, Part 1, Activities (жизненный цикл)](https://reader036.vdocuments.mx/reader036/viewer/2022062405/557f2c5ad8b42ad4798b48da/html5/thumbnails/7.jpg)
Excellence in Software Engineering
ACTIVITY
Элемент для взаимодействия с пользователем.
Что такое активность?
Пример простой активности
![Page 8: DIOR-DNA, Anton Zvonov, Part 1, Activities (жизненный цикл)](https://reader036.vdocuments.mx/reader036/viewer/2022062405/557f2c5ad8b42ad4798b48da/html5/thumbnails/8.jpg)
Excellence in Software Engineering 8
ACTIVITY
Intent
Намерение – абстрактное описание функции, которую одна активность должна выполнить по требованию другой.
private View.OnClickListener toSecondActivityOnClick = new View.OnClickListener() { @Override public void onClick(View v) { TextView result = (TextView) findViewById(R.id.result); String resultValue = result.getText().toString(); Intent intent = new Intent(getApplicationContext(), SecondActivity.class); intent.putExtra("result", resultValue); startActivity(intent); } };
Исходный код
Activity 1Одна активность шлёт Intent...
![Page 9: DIOR-DNA, Anton Zvonov, Part 1, Activities (жизненный цикл)](https://reader036.vdocuments.mx/reader036/viewer/2022062405/557f2c5ad8b42ad4798b48da/html5/thumbnails/9.jpg)
Excellence in Software Engineering 9
ACTIVITY
Intent
...вторая активность его обрабатывает
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.second_form);
Intent intent = getIntent(); if (intent != null) { String resultValue = intent.getStringExtra("result"); TextView textView = (TextView) findViewById(R.id.textView); textView.setText(resultValue); } }
Исходный код
Activity 2
![Page 10: DIOR-DNA, Anton Zvonov, Part 1, Activities (жизненный цикл)](https://reader036.vdocuments.mx/reader036/viewer/2022062405/557f2c5ad8b42ad4798b48da/html5/thumbnails/10.jpg)
Excellence in Software Engineering 10
TaskACTIVITY
A1 A2 A3 A4
Приложение 1 Приложение 2 Приложение 3
Приложение Активность Действие юзверя
Сообщения Просмотр списка сообщений Юзверь выбирает сообщение из списка
Сообщения Просмотр сообщения Юзверь переходит в меню Menu > Contact
Контакты Просмотр контакта Юзверь выбирает Call Mobile
Телефон Звонок на мобильный номер контакта
![Page 11: DIOR-DNA, Anton Zvonov, Part 1, Activities (жизненный цикл)](https://reader036.vdocuments.mx/reader036/viewer/2022062405/557f2c5ad8b42ad4798b48da/html5/thumbnails/11.jpg)
Excellence in Software Engineering 11
TaskACTIVITY
• Задача – это стек активностей.
• В связи с наличием стека активностей вводится понятие стек переходов назад (Back Stack).
Управление задачами
![Page 12: DIOR-DNA, Anton Zvonov, Part 1, Activities (жизненный цикл)](https://reader036.vdocuments.mx/reader036/viewer/2022062405/557f2c5ad8b42ad4798b48da/html5/thumbnails/12.jpg)
Excellence in Software Engineering 12
ЖИЗНЕННЫЙ ЦИКЛ
![Page 13: DIOR-DNA, Anton Zvonov, Part 1, Activities (жизненный цикл)](https://reader036.vdocuments.mx/reader036/viewer/2022062405/557f2c5ad8b42ad4798b48da/html5/thumbnails/13.jpg)
Excellence in Software Engineering 13
Жизненный цикл как он естьЖИЗНЕННЫЙ ЦИКЛ
Подгонка жизненного цикла под приложение – верный способ написать такую программу, которая будет неожиданно выходить из строя.
Check it out yourself!
Try it out yourself!
![Page 14: DIOR-DNA, Anton Zvonov, Part 1, Activities (жизненный цикл)](https://reader036.vdocuments.mx/reader036/viewer/2022062405/557f2c5ad8b42ad4798b48da/html5/thumbnails/14.jpg)
Excellence in Software Engineering 14
ЖИЗНЕННЫЙ ЦИКЛ
– Уничтожение активности
Очистка памяти
Активность “уничтожается” (вызывается метод onDestroy()), когда система хочет сбросить данный экземпляр активности. Если в вашем приложении нет на него ссылок, то это перспективный кандидат для сборщика мусора.
– Завершение процесса
В условиях дефицита памяти Android ищет процессы без активных компонентов. В крайних случаях, могут быть завершены и с активными компонентами. В простых приложениях процесс может стать кандидатом на удаление, после того, как к текущей активности будет применен метод onPause().
![Page 15: DIOR-DNA, Anton Zvonov, Part 1, Activities (жизненный цикл)](https://reader036.vdocuments.mx/reader036/viewer/2022062405/557f2c5ad8b42ad4798b48da/html5/thumbnails/15.jpg)
Excellence in Software Engineering 15
OnCreateЖИЗНЕННЫЙ ЦИКЛ
Вызывается после создания экземпляра Activity.
• Производится большая часть инициализации
активности: создание view, связывание данных с
представлением.
• Аргументом метода является объект Bundle,
содержащий сохраненное состояние. Если
сохраненного состояния нет, то аргумент имеет
значение null.
Killable: NO
![Page 16: DIOR-DNA, Anton Zvonov, Part 1, Activities (жизненный цикл)](https://reader036.vdocuments.mx/reader036/viewer/2022062405/557f2c5ad8b42ad4798b48da/html5/thumbnails/16.jpg)
Excellence in Software Engineering 16
OnRestartЖИЗНЕННЫЙ ЦИКЛ
Вызывается только в том случае, если до этого активность была остановлена (onStop).• Остановлена – означает, что активность не
находится на переднем плане и не
взаимодействует с пользователем.
• Вызывается до метода onStart.
Killable: NO
![Page 17: DIOR-DNA, Anton Zvonov, Part 1, Activities (жизненный цикл)](https://reader036.vdocuments.mx/reader036/viewer/2022062405/557f2c5ad8b42ad4798b48da/html5/thumbnails/17.jpg)
Excellence in Software Engineering 17
OnStartЖИЗНЕННЫЙ ЦИКЛ
Вызывается когда активность становится видна пользователю.
• Не означает, что пользователь может с ней
взаимодействовать.
Killable: NO
![Page 18: DIOR-DNA, Anton Zvonov, Part 1, Activities (жизненный цикл)](https://reader036.vdocuments.mx/reader036/viewer/2022062405/557f2c5ad8b42ad4798b48da/html5/thumbnails/18.jpg)
Excellence in Software Engineering 18
OnResumeЖИЗНЕННЫЙ ЦИКЛ
Вызывается когда пользователь может начинать взаимодействовать с активностью.
Killable: NO
![Page 19: DIOR-DNA, Anton Zvonov, Part 1, Activities (жизненный цикл)](https://reader036.vdocuments.mx/reader036/viewer/2022062405/557f2c5ad8b42ad4798b48da/html5/thumbnails/19.jpg)
Excellence in Software Engineering 19
OnPauseЖИЗНЕННЫЙ ЦИКЛ
Вызывается когда пользователь теряет возможность взаимодействовать с активностью.• Становится видна другая активность и
пользователь начинает взаимодействовать с ней.• Текущая активность все еще может быть видна
пользователю.• Хорошее место для сохранения состояния
приложения, остановки ресурсоемких операций (например, анимация).
• Этот метод должен отрабатывать очень быстро, т.к. onResume новой активности вызывается только после onPause предыдущей.
Killable: YES
Killable: NO starting with Honeycomb
![Page 20: DIOR-DNA, Anton Zvonov, Part 1, Activities (жизненный цикл)](https://reader036.vdocuments.mx/reader036/viewer/2022062405/557f2c5ad8b42ad4798b48da/html5/thumbnails/20.jpg)
Excellence in Software Engineering 20
OnStopЖИЗНЕННЫЙ ЦИКЛ
Активность больше не видна пользователю.
Killable: YES
![Page 21: DIOR-DNA, Anton Zvonov, Part 1, Activities (жизненный цикл)](https://reader036.vdocuments.mx/reader036/viewer/2022062405/557f2c5ad8b42ad4798b48da/html5/thumbnails/21.jpg)
Excellence in Software Engineering 21
OnDestroyЖИЗНЕННЫЙ ЦИКЛ
Активность будет удалена.
• Или система решила уничтожить активность для
в условиях дефицита памяти.
• Или кто-то вызвал метод finish активности.
Killable: YES
![Page 22: DIOR-DNA, Anton Zvonov, Part 1, Activities (жизненный цикл)](https://reader036.vdocuments.mx/reader036/viewer/2022062405/557f2c5ad8b42ad4798b48da/html5/thumbnails/22.jpg)
Excellence in Software Engineering 22
ВОПРОСЫ?