Основні поняття android. Роман Мазур

Post on 28-Nov-2014

2.131 Views

Category:

Documents

3 Downloads

Preview:

Click to see full reader

DESCRIPTION

Мастер- класс по Android разработке. Чернигов. Февраль

TRANSCRIPT

Основні поняття Android

Основні поняття Android

• На що схожий додаток для Android?

• З яких компонентів його можна побудувати?

• Як організувати роботу додатку?

Android Application

Це ви!

Android Application

• Програми взаємодіють між собою, формують одне середовище

• Відсутня одна точка входу

int main() {  printf(“Hello World”);}

Стандартна система з плагінами

Стандартна схема організації плагінівhttp://en.wikipedia.org/wiki/Plug-in_(computing)

Android (з плагінами)

(Application)

Android (з плагінами)

(Application)

4 типи компонентів

Компоненти

• Активності (Activities)

• Сервіси (Services)

• Контент-провайдери (Content Providers)

• Отримувачі широкомовних повідомлень (Broadcast Receivers)

Компоненти

• Активності (Activities)

• Сервіси (Services)

• Контент-провайдери (Content Providers)

• Отримувачі широкомовних повідомлень (Broadcast Receivers)

Активності та задачі

Активність

Додаток, задача, процес

Активність

GUI

Ресурси

• Графіка (drawable)

• Тексти (string)

• Стилі (style)

• Розмітка (layout)

• та ще дуже багато (dimen, color, string-array, …)

Конфігурація

• Густина пікселів екрану

• Орієнтація екрану

• Локаль

• Оператор

• Розмір екрану

• …

Життєвий цикл активності

• onCreate• onStart• onResume• onPause• onStop• onDestroy

• onSaveInstanceState• onRestoreInstanceState

• onRetainNonConfigurationInstance• getLastNotConfigurationInstance

Життєвий цикл активності

• Пам’ятаємо:o активність має стан, який змінюється під час

роботи користувача з неюo активність може бути знищена за ініціативи

системиo при цьому потрібно зберегти станo View вміють зберігати свій стан

• Найбанальніший приклад знищення активності: переворот екрану (зміна конфігурації).

Планшет

Фрагменти (телефон)

Фрагменти (планшет) 

Фрагменти

• Великий екран – великі зміни

• Основний будівельний блок вашого апа

• Ще цікавіший життєвий цикл

• Взаємодію між фрагментами слід здійснювати через активність

Фрагменти

Запуск активності

• Intento data URI, type дані, над якими працюємоo action дія, яку потрібно виконатиo extras додаткові параметри (ключ - значення)

• Набрати номер:data   = ‘tel:+38093XXXXXXX’action = Intent.ACTION_VIEW     або Intent.ACTION_CALL (вимагає окремого дозволу)

• Перейти до картиdata   = ‘geo:49.91667,36.31667?z=12’action = Intent.ACTION_VIEW

• Відправити листа, твіт, пост у фейсбук: Intent.ACTION_SEND + extras

Маніфест• Основна функція: описати власні компоненти та

вказати, як вони можуть активуватися ззовні

• Вказує вимоги вашого апа до апаратури та версії Android

• Перелічує дозволи, які користувач повинен буде надати апу

Підміняємо сайт на свій додаток<activity android:name=".activity.BrowserInterceptorActivity”>   <intent-filter>        <!– Фільтр для Intent.action -->        <action android:name="android.intent.action.VIEW" />    <!– Фільтр для Intent.category -->        <category android:name="android.intent.category.DEFAULT" />    <category android:name="android.intent.category.BROWSABLE" />        <!– Фільтр для Intent.data (URI) -->        <data       android:scheme="http"       android:host=”example.com"       android:pathPattern="/profile/.*"       />  </intent-filter> </activity>

Компоненти

• Активності (Activities)

• Сервіси (Services)

• Контент-провайдери (Content Providers)

• Отримувачі широкомовних повідомлень (Broadcast Receivers)

Сервіси

• Не пов’язані з UI напряму

• Фонові задачі: програвання музики, завантаження даних

• Як правило, взаємодію з API якогось сервера бажано реалізовувати через сервіс

• Простіший життєвий цикл (суб’єктивно!)

• Два типи: з підв’язкою, виконання команд

Сервіси

• Не пов’язані з UI напряму

• Фонові задачі: програвання музики, завантаження даних

• Як правило, взаємодію з API якогось сервера бажано реалізовувати через сервіс

• Простіший життєвий цикл (суб’єктивно!)

• Два типи: з підв’язкою, виконання команд

Сервіси

Сервіси

Команди - інтенти

Клієнт (відправка команди):context.startService(intent);

Сервіс (прийом команди):public int onStartCommand(Intent intent, ...)

Сервіси

Клієнт отримує  "зв'язківця" - Binder

Клієнт (підписка):context.bindService(intent, connection, flags);

onServiceConnected(ComponentName, IBinder) { ... }

Сервіс (віддача інтерфейсу):onBind(Intent) { ... }

Сервіси

• Локальний "зв'язківець"• Передача повідомлень

(Messanger)• AIDL (аналогії: Java RMI, SOAP)

Компоненти

• Активності (Activities)

• Сервіси (Services)

• Контент-провайдери (Content Providers)

• Отримувачі широкомовних повідомлень (Broadcast Receivers)

Контент-провайдери

• Надають доступ до вашого набору данихcontent://my.content.authority/place/345authority, визначається в маніфесті

• Інші компоненти працюють з ними через ContentResolver

• Приклад стандартного провайдера: контакти

Компоненти

• Активності (Activities)

• Сервіси (Services)

• Контент-провайдери (Content Providers)

• Отримувачі широкомовних повідомлень (Broadcast Receivers)

Broadcast Receiver

• Зміна часового поясу

• Завантаження системи

• Вимкнення телефону

• Для того, щоб зробити розумні сервіси:o Зміна стану заряду батареїo Підключення «зарядки»

Ваша черга

Роман Мазур

Керівник Android/Java відділу Stanfy rmazur@stanfy.com.ua Skype: roman.mazur.f

top related