Основні поняття android. Роман Мазур
Post on 28-Nov-2014
2.131 Views
Preview:
DESCRIPTION
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