Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Типы процессов в Android-приложении
Жизненный цикл приложения тесно связан с жизненным циклом его процесса. Также он зависит от текущего состояния системы. В случае нехватки памяти, Android убивает наименее значимые процессы. Значимость процесса зависит от его типа. Типы процессов, в зависимости от важности, выглядят следующим образом (от наиболее до наименее важных): · Процесс переднего плана – процесс приложения, с которым пользователь взаимодействует в данный момент. Процесс считается таковым, если его Activity находится на вершине Activity-стека (была вызвана функция onResume(), или его Broadcast Receiver работает в настоящее время (в данный момент исполняется приложением onReceive()), или же его Service выполняет callback-методы, такие как onCreate(), onStart() или onDestroy(). Как правило, таких процессов очень мало и они закрываются в самую последнюю очередь. · Видимый процесс — процесс, который имеет Activity, видимый конечному пользователю в данный момент времени. Процессов, которые выводятся на экран, очень мало, поэтому их работа прерывается только в крайнем случае, если не хватает ресурсов для активных приложений. · Служебный процесс – процесс, содержащий Service, для которого была вызвана функция startService(), при условии, что данный Service сейчас работает. · Процесс заднего фона. Данный процесс не имеет видимых пользователю Activity (была вызвана функция onStop()). Как правило, существует множество фоновых процессов, работа которых завершается по принципу " последний запущенный закрывается последним", чтобы освободить ресурсы для приложений, работающих на переднем плане. Services Service – это некий процесс, который запускается в фоновом режиме. Как пример, Service может получать данные по сети, выполнять какие-либо длительные вычисления. Хорошим примером Service служит проигрыватель музыки. Пользователь может выбрать любую песню в проигрывателе, включить ее и закрыть плеер занявшись чем-нибудь другим. Музыка будет проигрываться в фоновом процессе. Service проигрывания музыки будет работать, даже если Activity плеера закрыта. Подобно Activity, Service имеет свои методы жизненного цикла: · void onCreate() · void onStart(Intent intent) · void onDestroy() В полном жизненном цикле Service существует два вложенных цикла: · полная целая жизнь Service – промежуток между временем вызова метода onCreate() и временем возвращения onDestroy(). Подобно Activity, для Services производят начальную инициализацию в onCreate() и освобождают все остающиеся ресурсы в onDestroy(); · активная целая жизнь Service – начинается с вызова метода onStart(). Этому методу передается объект Intent, который передавался в startService(). Как и Activities, Services запускаются в главном потоке процесса приложения. По этой причине их следует запускать в отдельном потоке, чтобы они не блокировали другие компоненты или пользовательский интерфейс. Broadcast receivers Broadcast receiver– это компонент, который ничего не делает, кроме того, что рассылает и реагирует на широковещательные сообщения. Примером широковещательных компонентов могут быть: сообщения об переходе на летнее/зимнее время, сообщения об минимальном заряде батареи и так далее. Broadcast receiver не отображает пользовательский интерфейс, но может запустить Activity на полученное сообщение или использовать NotificationManager для привлечения внимания пользователя. Привлечь внимание пользователя можно, например, вибрацией устройства, проигрыванием звука или миганием вспышки. Приемник широковещательных сообщений имеет единственный метод жизненного цикла: onReceive(). Когда широковещательное сообщение прибывает для получателя, Android вызывает его методом onReceive() и передает в него объект Intent, содержащий сообщение. Приемник широковещательных сообщений является активным только во время выполнения этого метода. Процесс, который в настоящее время выполняет Broadcast receiver, является приоритетным процессом и будет сохранен, кроме случаев критического недостатка памяти в системе. Когда программа возвращается из onReceive(), приемник становится неактивным и система полагает, что работа объекта Broadcast receiver закончена. Процесс с активным широковещательным получателем защищен от уничтожения системой. Однако процесс, содержащий неактивные компоненты, может быть уничтожен системой в любое время, когда память, которую он потребляет, будет необходима другим процессам. Content providers Content providers предоставляют доступ к данным (чтение, добавление, обновление). Content provider может предоставлять доступ к данным не только своему приложению, но и другим. Данные могут размещаться в файловой системе, в базе данных.
Дальше > >
Введение в разработку Android-приложений A | версия для печати Виджеты Виджет – это объект View, который служит интерфейсом для взаимодействия с пользователем. Иначе, виджеты – это обычные элементы управления: кнопки, текстовые поля, флажки, переключатели, списки. Стандартные элементы имеют привычные свойства: ширина, высота, цвет и тому подобные. Еще два важных свойства, которые могут влиять на размер и положение дочерних элементов - важность (weight) и выравнивание (gravity). Weight используется для присвоения элементу показателя важности, отличающего его от других элементов, находящихся в контейнере. Предположим, в контейнере находится три элемента управления: первый имеет важность 1 (максимальное возможное значение), а два других имеют значение 0. В этом случае элемент управления, который имеет значение важности 1, займет в контейнере все свободное пространство. Gravity – это ориентация в контейнере. Например, необходимо выровнять текст надписи по правому краю, тогда свойство gravity будет иметь значение right. Набор значений для gravity ограничен: left, center, right, top, bottom, center_vertiсаl, сliр_horizontal и еще некоторые. TextView Виджет TextView предназначен для отображения текста без возможности редактирования его пользователем. TextView один из самых используемых виджетов. С его помощью пользователю удобнее ориентироваться в программе. По сути, TextView служит для представления пользователю описательного текста. Атрибуты TextView: · android: textsize – размер текста. При установке размера текста используются несколько единиц измерения: px (pixels), dp (density-independent pixels), sp (scale-independent pixels), in (inches), pt (points), mm (millimeters). Чтобы текст мог меняться в зависимости от выбора пользователя, используют единицы измерения sp. · android: textstyle – стиль текста. Используются константы: normal, bold, italic. · android: textcolor – цвет текста. Используются четыре формата в шестнадцатеричной кодировке: #RGB; #ARGB; #RRGGBB; #AARRGGBB, где R, G, B – соответствующий цвет, А – прозрачность (alpha-channel). Значение А, установленное в 0, означает прозрачность 100%. Чтобы оживить текст, можно дополнительно задействовать атрибуты для создания эффектов тени: shadowColor (цвет тени), shadowDx (смещение тени по горизонтали), shadowDy (смещение по вертикали) и shadowRadius (ширина тени). Во время установки значений изменения не видны, необходимо запустить пример в эмуляторе или на устройстве. Рассмотрим частую ошибку при попытке изменить фон элемента программным способом. Предположим, в ресурсах определен зеленый цвет: < color name=" tvBackground" > #337700< /color> Следующий код будет ошибочным: tv.setBackgroundColor(R.color.tvBackground); Нужно так (два варианта): tv.setBackgroundResource(R.color.tvBackground); tv.setBackgroundColor(getResources().getColor(R.color.tvBackground)); Button Кнопка – один из самых распространенных элементов управления в программировании. Наследуется от Textview и является базовым классом для класса СompoundButton. От класса CompoundButton, в свою очередь, наследуются такие элементы как CheckBox, ToggleButton и RadioButton. На кнопке располагается текст и на кнопку нужно нажать, чтобы получить результат. Если вы разместили на экране кнопку и будете нажимать на нее, то ничего не произойдет. Необходимо написать код, который будет выполняться при нажатии. Существует несколько способов обработки нажатий на кнопку. Относительно новый и простой для начинающего программиста способ – использовать атрибут onClick. Иногда нужно сделать кнопку недоступной. Через XML нельзя сделать кнопку недоступной (нет подходящего атрибута). Это можно сделать программно через метод setEnable(). Как альтернативу можно рассмотреть атрибут android: clickable, который позволит кнопке не реагировать на касания, но при этом вид кнопки останется обычным. Другие типы виджетов · CheckBox является флажком, с помощью которого пользователь может отметить (поставить галочку) определенную опцию. Очень часто флажки используются в настройках, когда нужно выборочно выбрать определенные пункты, необходимые для комфортной работы пользователю. · RadioButton. Главная особенность элемента RadioButton состоит в том, что он не используется в одиночестве. Всегда должно быть два и более переключателя и только один из них может быть выбранным. · ToggleButton по своей функциональности похож на флажок (checkbox) или переключатель (radiobutton). Это кнопка, которая может находиться в одном из двух состояний: активна (On) или неактивна (Off). · Switch – еще один вид переключателей, представляет собой полоску с двумя состояниями, переключиться между которыми можно сдвиганием ползунка. · Spinner похож на выпадающий список. В закрытом состоянии элемент показывает одну строчку, при раскрытии выводит список в виде диалогового окна с переключателями. · ProgressBar (индикатор прогресса) применяется в тех случаях, когда пользователю нужно показать, что программа не зависла, а выполняет продолжительную работу. · SeekBar – обычный слайдер, чтобы пользователь мог передвигать ползунок пальцем на экране. Также можно передвигать ползунок с помощью клавиш-стрелок. · RatingBar показывает значение рейтинга в виде звездочек. Можно установить рейтинг касанием пальца или с помощью клавиш курсора, используя заранее заданное количество звездочек. Для виджета RatingBar используются следующие методы: · setNumStart(int) – устанавливает число звездочек · getRating() – возвращает значение рейтинга · setRating(float) – устанавливает значение рейтинга · setStepSize(float) – устанавливает шаг приращения рейтинга Адаптеры В Android часто используются адаптеры. Если говорить в общих чертах, то адаптеры упрощают связывание данных с элементом управления. Адаптеры используются при работе с виджетами: ListView, Spinner и другими. ListAdapter наследует базовый класс Adapter и служит мостом между данными и ListView. Часто данные могут быть представлены курсорами, но необязательно. Удобство в том, что ListView может отображать любые данные, лишь бы они были завернуты в ListAdapter. ListAdapter имеет несколько подклассов (ArrayAdapter, BaseAdapter, CursorAdapter и другие), которые предназначены для различных целей. · ArrayAdapter специально предназначен для работы с элементами списка. Он представляет данные в виде массива и добавляет удобный функционал для работы с ними (добавление, удаление, поиск). · BaseAdapter – очень простой адаптер, обычно используется для заполнения списка статическими данными (которые могут быть взяты из ресурсов). · CursorAdapter предоставляет данные для списка через курсор. Эмулятор. Эмулятор Android – это важный инструмент разработчика. Необходимо изучить его особенности и использовать его на начальном этапе разработки. Однако, следует помнить, что эмулятор лишь моделирует общее поведение реального устройства. Поэтому окончательное тестирование необходимо проводить на настоящем телефоне. Эмулятор создается при помощи Android Virtual Device Manager (AVD Manager). Создавая новое виртуальное устройство, в окне свойств можно задать произвольное название для эмулятора, указать версию API и установить остальные параметры (например, разрешение, плотность пикселей на экране, емкость SD-карты и другие). С помощью эмулятора можно иметь полноценный доступ к интернету, настраивать скорость и латентность соединения. Также можно имитировать входящие и исходящие телефонные звонки и SMS-сообщения. Но в то же время эмулятор не поддерживает виброзвонок, светодиоды, камеру, акселерометр и работу с компасом. Теперь, когда известны основные принципы программирования для Android и создан эмулятор, можно приступать к написанию приложений.
Дальше > >
Самостоятельная работа 1: |
Последнее изменение этой страницы: 2017-04-12; Просмотров: 157; Нарушение авторского права страницы