с соответствующим ей UI public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); ... } • После чего доступ к каждому View по id View view = findViewById(R.id.main_simple_view); Button button = (Button)findViewById(R.id.main_simple_button); • Атрибут android:id при объявлении View в xml <Button android:id="@+id/main_simple_button" .../>
во взаимодействии с пользователем • Когда нам нужно перейти к другому моменту - мы запускаем другую Activity • Например, редактирование фотографии (1), выбор фотографии из списка (2), просмотр информации о программе (3)
элемент различных компонентов Android приложений • Для запуска другой Activity мы посылаем в систему намерение с описанием того, что нам нужно • Возможен явный или неявный запуск Activity, а также запуск с целью получения результата • Неявный запуск позволяет использовать Activity из разных приложений в рамках одной задачи
• action - общее описание действия • data - основные данные для обработки • category - дополнительная информация о action • type - MIME type поля data • component - явный получатель intent • extras - дополнительные данные • http://d.android.com/reference/android/content/Intent.html
Приложения (точнее процессы) ранжируются в соответствии c важностью для пользователя • При нехватке ресурсов наименее важному приложению будет дана возможность сохранить состояние, после чего оно будет уничтожено • При необходимости уничтоженное приложение будет повторно пересоздано, и ему будет дана возможность восстановить свое состояние
пользователем • Далее приоритет имеют процессы, выполняющие фоновые операции через Service • Наиболее низкий приоритет имеют пустые процессы • Если ваше приложение невидимо для пользователя и не имеет запущенного Service - оно в зоне риска
уничтожении процесса и содержащихся в нем Activity • Если пользователь вернется к уничтоженной Activity, то она будет пересоздана • Разработчик имеет возможность сохранить/ восстановить состояние Activity за счет перегрузки методов: оnSaveInstanceState/onRestoreInstanceState • На этом пути есть некоторые «подводные камни» - однако, все приходит с опытом...
конфигурации • При этом пересоздается только Activity! • Примеры: смена ориентации устройства, системной локали, режима работы устройства и некоторые другие ситуации • Пересоздание Activity в том или ином случае изменения конфигурации можно запретить при объявлении в манифесте
методе оnSaveInstanceState • А восстановление - в методе onRestoreInstanceState • Состояние других данных должно быть сохранено в методе onPause в БД, настройки, файл на диске и т.д. • Выполнение асинхронных задач лучше организовать независимо от Activity (Service/Loaders)
при типичных сценариях пользовательского взаимодействия! • Для этого стоит посмотреть доклад «Inside the Android Application Framework» с конференции Google I/O 2008, http://youtu.be/TkPiXRNee7A • Также в докладе рассматриваются другие «тонкие», но важные моменты (например, межпроцессное взаимодействие внутри Android)
имеет особую модель многозадачности. Ваше приложение может быть пересоздано при нехватке ресурсов. Хорошо спроектированная Activity является независимым и повторно используемым компонентом для взаимодействия с пользователем. Резюме 29