22
Excellence in Software Engineering Activity, Жизненный цикл DIOR-DNA

DIOR-DNA, Anton Zvonov, Part 1, Activities (жизненный цикл)

  • Upload
    -

  • View
    269

  • Download
    2

Embed Size (px)

Citation preview

Page 1: DIOR-DNA, Anton Zvonov, Part 1, Activities (жизненный цикл)

Excellence inSoftware Engineering

Activity, Жизненный цикл

DIOR-DNA

Page 2: DIOR-DNA, Anton Zvonov, Part 1, Activities (жизненный цикл)

Excellence in Software Engineering 2

ANDROIDСоставные части приложения

Page 3: DIOR-DNA, Anton Zvonov, Part 1, Activities (жизненный цикл)

Excellence in Software Engineering 3

Традиционная модель программирования

СОСТАВНЫЕ ЧАСТИ ПРИЛОЖЕНИЯ ANDROID

• При запуске ОС традиционно используют единую точку входа – main

• ОС загружает код в процесс, а потом приступает к исполнению

Процесс

Приложение

main

Page 4: DIOR-DNA, Anton Zvonov, Part 1, Activities (жизненный цикл)

Excellence in Software Engineering 4

Модель программирования AndroidСОСТАВНЫЕ ЧАСТИ ПРИЛОЖЕНИЯ ANDROID

• Программы Android должны быть рассчитаны на то, что система будет запускать их в различных местах

• Программа – это набор взаимодействующих компонентов

Процесс

Приложение

JVM Dalvik

Page 5: DIOR-DNA, Anton Zvonov, Part 1, Activities (жизненный цикл)

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 (жизненный цикл)

Excellence in Software Engineering 6

ACTIVITY

Page 7: DIOR-DNA, Anton Zvonov, Part 1, Activities (жизненный цикл)

Excellence in Software Engineering

ACTIVITY

Элемент для взаимодействия с пользователем.

Что такое активность?

Пример простой активности

Page 8: DIOR-DNA, Anton Zvonov, Part 1, Activities (жизненный цикл)

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 (жизненный цикл)

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 (жизненный цикл)

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 (жизненный цикл)

Excellence in Software Engineering 11

TaskACTIVITY

• Задача – это стек активностей.

• В связи с наличием стека активностей вводится понятие стек переходов назад (Back Stack).

Управление задачами

Page 12: DIOR-DNA, Anton Zvonov, Part 1, Activities (жизненный цикл)

Excellence in Software Engineering 12

ЖИЗНЕННЫЙ ЦИКЛ

Page 13: DIOR-DNA, Anton Zvonov, Part 1, Activities (жизненный цикл)

Excellence in Software Engineering 13

Жизненный цикл как он естьЖИЗНЕННЫЙ ЦИКЛ

Подгонка жизненного цикла под приложение – верный способ написать такую программу, которая будет неожиданно выходить из строя.

Check it out yourself!

Try it out yourself!

Page 14: DIOR-DNA, Anton Zvonov, Part 1, Activities (жизненный цикл)

Excellence in Software Engineering 14

ЖИЗНЕННЫЙ ЦИКЛ

– Уничтожение активности

Очистка памяти

Активность “уничтожается” (вызывается метод onDestroy()), когда система хочет сбросить данный экземпляр активности. Если в вашем приложении нет на него ссылок, то это перспективный кандидат для сборщика мусора.

– Завершение процесса

В условиях дефицита памяти Android ищет процессы без активных компонентов. В крайних случаях, могут быть завершены и с активными компонентами. В простых приложениях процесс может стать кандидатом на удаление, после того, как к текущей активности будет применен метод onPause().

Page 15: DIOR-DNA, Anton Zvonov, Part 1, Activities (жизненный цикл)

Excellence in Software Engineering 15

OnCreateЖИЗНЕННЫЙ ЦИКЛ

Вызывается после создания экземпляра Activity.

• Производится большая часть инициализации

активности: создание view, связывание данных с

представлением.

• Аргументом метода является объект Bundle,

содержащий сохраненное состояние. Если

сохраненного состояния нет, то аргумент имеет

значение null.

Killable: NO

Page 16: DIOR-DNA, Anton Zvonov, Part 1, Activities (жизненный цикл)

Excellence in Software Engineering 16

OnRestartЖИЗНЕННЫЙ ЦИКЛ

Вызывается только в том случае, если до этого активность была остановлена (onStop).• Остановлена – означает, что активность не

находится на переднем плане и не

взаимодействует с пользователем.

• Вызывается до метода onStart.

Killable: NO

Page 17: DIOR-DNA, Anton Zvonov, Part 1, Activities (жизненный цикл)

Excellence in Software Engineering 17

OnStartЖИЗНЕННЫЙ ЦИКЛ

Вызывается когда активность становится видна пользователю.

• Не означает, что пользователь может с ней

взаимодействовать.

Killable: NO

Page 18: DIOR-DNA, Anton Zvonov, Part 1, Activities (жизненный цикл)

Excellence in Software Engineering 18

OnResumeЖИЗНЕННЫЙ ЦИКЛ

Вызывается когда пользователь может начинать взаимодействовать с активностью.

Killable: NO

Page 19: DIOR-DNA, Anton Zvonov, Part 1, Activities (жизненный цикл)

Excellence in Software Engineering 19

OnPauseЖИЗНЕННЫЙ ЦИКЛ

Вызывается когда пользователь теряет возможность взаимодействовать с активностью.• Становится видна другая активность и

пользователь начинает взаимодействовать с ней.• Текущая активность все еще может быть видна

пользователю.• Хорошее место для сохранения состояния

приложения, остановки ресурсоемких операций (например, анимация).

• Этот метод должен отрабатывать очень быстро, т.к. onResume новой активности вызывается только после onPause предыдущей.

Killable: YES

Killable: NO starting with Honeycomb

Page 20: DIOR-DNA, Anton Zvonov, Part 1, Activities (жизненный цикл)

Excellence in Software Engineering 20

OnStopЖИЗНЕННЫЙ ЦИКЛ

Активность больше не видна пользователю.

Killable: YES

Page 21: DIOR-DNA, Anton Zvonov, Part 1, Activities (жизненный цикл)

Excellence in Software Engineering 21

OnDestroyЖИЗНЕННЫЙ ЦИКЛ

Активность будет удалена.

• Или система решила уничтожить активность для

в условиях дефицита памяти.

• Или кто-то вызвал метод finish активности.

Killable: YES

Page 22: DIOR-DNA, Anton Zvonov, Part 1, Activities (жизненный цикл)

Excellence in Software Engineering 22

ВОПРОСЫ?