3. СОСТАВНЫЕ ЧАСТИ ПРИЛОЖЕНИЯ ANDROID
Традиционная модель программирования
• При запуске ОС
традиционно
Процесс
используют единую
точку входа – main
Приложение • ОС загружает код в
процесс, а потом
приступает к
main
исполнению
3
4. СОСТАВНЫЕ ЧАСТИ ПРИЛОЖЕНИЯ ANDROID
Модель программирования Android
• Программы Android
должны быть
Процесс
рассчитаны на
то, что система
JVM Dalvik будет запускать их в
различных местах
Приложение
• Программа – это
набор
взаимодействующих
компонентов
4
5. СОСТАВНЫЕ ЧАСТИ ПРИЛОЖЕНИЯ ANDROID
Компоненты Android
Элемент для взаимодействия с
Activity пользователем. Обычно целиком
занимает экран.
Решают фоновые задачи, которые
Service могут никак не отображаться на
экране. Например, плеер.
Компоненты, в целом аналогичные
Content вебсервисам. Идентифицируются с
помощью URI.
Provider (Query, Insert, Update, Delete)
Broadcast Подписывается на события системы
(других приложений). Не имеет
Receiver своего UI.
5
8. ACTIVITY
Intent
Намерение – абстрактное описание
функции, которую одна активность должна
выполнить по требованию другой.
Одна активность шлѐт Intent... Activity 1
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);
}
};
Исходный код
8
9. ACTIVITY
Intent
...вторая активность его Activity 2
обрабатывает
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);
}
}
Исходный код
9
10. ACTIVITY
Task
Приложение 1 Приложение 2 Приложение 3
A1 A2 A3 A4
Приложение Активность Действие юзверя
Сообщения Просмотр списка сообщений Юзверь выбирает сообщение из списка
Сообщения Просмотр сообщения Юзверь переходит в меню Menu > Contact
Контакты Просмотр контакта Юзверь выбирает Call Mobile
Телефон Звонок на мобильный номер
контакта
10
11. ACTIVITY
Task
• Задача – это стек
активностей.
• В связи с наличием
стека активностей
вводится понятие
стек переходов
назад (Back Stack).
Управление задачами
11
13. ЖИЗНЕННЫЙ ЦИКЛ
Жизненный цикл как он есть
Подгонка жизненного
цикла под
приложение –
верный способ
написать такую
программу, которая
будет неожиданно
выходить из строя.
Check it out yourself!
Try it out yourself!
13
14. ЖИЗНЕННЫЙ ЦИКЛ
Очистка памяти
– Уничтожение активности
Активность “уничтожается” (вызывается метод
onDestroy()), когда система хочет сбросить данный экземпляр
активности. Если в вашем приложении нет на него ссылок, то
это перспективный кандидат для сборщика мусора.
– Завершение процесса
В условиях дефицита памяти Android ищет процессы без
активных компонентов. В крайних случаях, могут быть
завершены и с активными компонентами. В простых
приложениях процесс может стать кандидатом на
удаление, после того, как к текущей активности будет
применен метод onPause().
14
15. ЖИЗНЕННЫЙ ЦИКЛ
OnCreate
Вызывается после создания
экземпляра Activity.
• Производится большая часть инициализации
активности: создание view, связывание данных с
представлением.
Killable: NO • Аргументом метода является объект
Bundle, содержащий сохраненное состояние.
Если сохраненного состояния нет, то аргумент
имеет значение null.
15
16. ЖИЗНЕННЫЙ ЦИКЛ
OnRestart
Вызывается только в том
случае, если до этого активность
была остановлена (onStop).
• Остановлена – означает, что активность не
находится на переднем плане и не
Killable: NO взаимодействует с пользователем.
• Вызывается до метода onStart.
16
17. ЖИЗНЕННЫЙ ЦИКЛ
OnStart
Вызывается когда активность
становится видна пользователю.
• Не означает, что пользователь может с ней
взаимодействовать.
Killable: NO
17
18. ЖИЗНЕННЫЙ ЦИКЛ
OnResume
Вызывается когда пользователь
может начинать взаимодействовать
с активностью.
Killable: NO
18
19. ЖИЗНЕННЫЙ ЦИКЛ
OnPause
Вызывается когда пользователь
теряет возможность
взаимодействовать с активностью.
• Становится видна другая активность и
пользователь начинает взаимодействовать с ней.
• Текущая активность все еще может быть видна
Killable: YES пользователю.
• Хорошее место для сохранения состояния
Killable: NO приложения, остановки ресурсоемких операций
starting with
Honeycomb (например, анимация).
• Этот метод должен отрабатывать очень
быстро, т.к. onResume новой активности
вызывается только после onPause предыдущей.
19
21. ЖИЗНЕННЫЙ ЦИКЛ
OnDestroy
Активность будет удалена.
• Или система решила уничтожить активность для
в условиях дефицита памяти.
• Или кто-то вызвал метод finish активности.
Killable: YES
21