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

2,047 views

Published on

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

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,047
On SlideShare
0
From Embeds
0
Number of Embeds
468
Actions
Shares
0
Downloads
11
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide
  • 3хв
  • 5хв
  • 6хв
  • 6хв
  • 8хв
  • 9хв
  • 9хв
  • 10хв
  • 10хв
  • 13хв
  • 14хв
  • Не забудь про безпеку 16хв
  • 17хв
  • 20хв
  • 22хв
  • 24хв
  • Запитай про приклади 30хв
  • Тут має бути демонстрація 40хв
  • 41хв
  • 41хв
  • 41хв
  • 43хв
  • Демонстрація 50хв
  • 52хв
  • 44хв
  • Демонстрація 50хв
  • 50хв
  • 53хв
  • 60хв
  • 60хв
  • 60хв
  • 60хв
  • 60хв
  • 60хв
  • 63хв
  • 63хв
  • Локальні ресівери 65хв
  • Основні поняття Android. Роман Мазур

    1. 1. Основні поняття Android
    2. 2. Основні поняття Android <ul><ul><li>На що схожий додаток для Android? </li></ul></ul><ul><ul><li>З яких компонентів його можна побудувати? </li></ul></ul><ul><ul><li>Як організувати роботу додатку? </li></ul></ul>
    3. 3. Android Application Це ви!
    4. 4. Android Application <ul><ul><li>Програми взаємодіють між собою, формують одне середовище </li></ul></ul><ul><ul><li>Відсутня одна точка входу </li></ul></ul>int main () {    printf(“Hello World”); }
    5. 5. Стандартна система з плагінами Стандартна схема організації плагінів http://en.wikipedia.org/wiki/Plug-in_(computing)
    6. 6. Android (з плагінами) (Application)
    7. 7. Android (з плагінами) (Application) 4 типи компонентів
    8. 8. Компоненти <ul><ul><li>Активності (Activities) </li></ul></ul><ul><ul><li>Сервіси (Services) </li></ul></ul><ul><ul><li>Контент-провайдери (Content Providers) </li></ul></ul><ul><ul><li>Отримувачі широкомовних повідомлень (Broadcast Receivers) </li></ul></ul>
    9. 9. Компоненти <ul><ul><li>Активності (Activities) </li></ul></ul><ul><ul><li>Сервіси (Services) </li></ul></ul><ul><ul><li>Контент-провайдери (Content Providers) </li></ul></ul><ul><ul><li>Отримувачі широкомовних повідомлень (Broadcast Receivers) </li></ul></ul>
    10. 10. Активності та задачі
    11. 11. Активність
    12. 12. Додаток, задача, процес
    13. 13. Активність
    14. 14. GUI
    15. 15. Ресурси <ul><ul><li>Графіка (drawable) </li></ul></ul><ul><ul><li>Тексти (string) </li></ul></ul><ul><ul><li>Стилі (style) </li></ul></ul><ul><ul><li>Розмітка (layout) </li></ul></ul><ul><ul><li>та ще дуже багато (dimen, color, string-array, …) </li></ul></ul>
    16. 16. Конфігурація <ul><ul><li>Густина пікселів екрану </li></ul></ul><ul><ul><li>Орієнтація екрану </li></ul></ul><ul><ul><li>Локаль </li></ul></ul><ul><ul><li>Оператор </li></ul></ul><ul><ul><li>Розмір екрану </li></ul></ul><ul><ul><li>… </li></ul></ul>
    17. 17. Життєвий цикл активності <ul><ul><li>onCreate </li></ul></ul><ul><ul><li>onStart </li></ul></ul><ul><ul><li>onResume </li></ul></ul><ul><ul><li>onPause </li></ul></ul><ul><ul><li>onStop </li></ul></ul><ul><ul><li>onDestroy </li></ul></ul><ul><ul><li>onSaveInstanceState </li></ul></ul><ul><ul><li>onRestoreInstanceState </li></ul></ul><ul><ul><li>onRetainNonConfigurationInstance </li></ul></ul><ul><ul><li>getLastNotConfigurationInstance </li></ul></ul>
    18. 18. Життєвий цикл активності <ul><ul><li>Пам’ятаємо: </li></ul></ul><ul><ul><ul><li>активність має стан, який змінюється під час роботи користувача з нею </li></ul></ul></ul><ul><ul><ul><li>активність може бути знищена за ініціативи системи </li></ul></ul></ul><ul><ul><ul><li>при цьому потрібно зберегти стан </li></ul></ul></ul><ul><ul><ul><li>View вміють зберігати свій стан </li></ul></ul></ul><ul><ul><li>Найбанальніший приклад знищення активності: переворот екрану (зміна конфігурації). </li></ul></ul>
    19. 19. Планшет
    20. 20. Фрагменти (телефон)
    21. 21. Фрагменти (планшет) 
    22. 22. Фрагменти <ul><ul><li>Великий екран – великі зміни </li></ul></ul><ul><ul><li>Основний будівельний блок вашого апа </li></ul></ul><ul><ul><li>Ще цікавіший життєвий цикл </li></ul></ul><ul><ul><li>Взаємодію між фрагментами слід здійснювати через активність </li></ul></ul>
    23. 23. Фрагменти
    24. 24. Запуск активності <ul><ul><li>Intent </li></ul></ul><ul><ul><ul><li>data URI, type дані, над якими працюємо </li></ul></ul></ul><ul><ul><ul><li>action дія, яку потрібно виконати </li></ul></ul></ul><ul><ul><ul><li>extras додаткові параметри (ключ - значення) </li></ul></ul></ul><ul><ul><li>Набрати номер: data   = ‘tel:+38093XXXXXXX’ action = Intent.ACTION_VIEW     або Intent.ACTION_CALL (вимагає окремого дозволу) </li></ul></ul><ul><ul><li>Перейти до карти data   = ‘geo:49.91667,36.31667?z=12’ action = Intent.ACTION_VIEW </li></ul></ul><ul><ul><li>Відправити листа, твіт, пост у фейсбук: Intent.ACTION_SEND + extras </li></ul></ul>
    25. 25. Маніфест <ul><ul><li>Основна функція: описати власні компоненти та вказати, як вони можуть активуватися ззовні </li></ul></ul><ul><ul><li>Вказує вимоги вашого апа до апаратури та версії Android </li></ul></ul><ul><ul><li>Перелічує дозволи, які користувач повинен буде надати апу </li></ul></ul>
    26. 26. Підміняємо сайт на свій додаток <activity android:name= &quot;.activity.BrowserInterceptorActivity” >   <intent-filter>         <!– Фільтр для Intent.action -->        <action android:name= &quot; android.intent.action.VIEW &quot; />     <!– Фільтр для Intent.category -->        <category android:name= &quot; android.intent.category.DEFAULT &quot; />     <category android:name= &quot; android.intent.category.BROWSABLE &quot; />         <!– Фільтр для Intent.data (URI) -->        <data       android:scheme= &quot; http &quot;       android:host=” example.com &quot;       android:pathPattern=&quot; /profile/.* &quot;       />   </intent-filter> </activity>
    27. 27. Компоненти <ul><ul><li>Активності (Activities) </li></ul></ul><ul><ul><li>Сервіси (Services) </li></ul></ul><ul><ul><li>Контент-провайдери (Content Providers) </li></ul></ul><ul><ul><li>Отримувачі широкомовних повідомлень (Broadcast Receivers) </li></ul></ul>
    28. 28. Сервіси <ul><ul><li>Не пов’язані з UI напряму </li></ul></ul><ul><ul><li>Фонові задачі: програвання музики, завантаження даних </li></ul></ul><ul><ul><li>Як правило, взаємодію з API якогось сервера бажано реалізовувати через сервіс </li></ul></ul><ul><ul><li>Простіший життєвий цикл (суб’єктивно!) </li></ul></ul><ul><ul><li>Два типи: з підв’язкою, виконання команд </li></ul></ul>
    29. 29. Сервіси <ul><ul><li>Не пов’язані з UI напряму </li></ul></ul><ul><ul><li>Фонові задачі: програвання музики, завантаження даних </li></ul></ul><ul><ul><li>Як правило, взаємодію з API якогось сервера бажано реалізовувати через сервіс </li></ul></ul><ul><ul><li>Простіший життєвий цикл (суб’єктивно!) </li></ul></ul><ul><ul><li>Два типи: з підв’язкою, виконання команд </li></ul></ul>
    30. 30. Сервіси
    31. 31. Сервіси Команди - інтенти Клієнт (відправка команди): context.startService(intent); Сервіс (прийом команди): public int onStartCommand(Intent intent, ...)
    32. 32. Сервіси Клієнт отримує  &quot;зв'язківця&quot; - Binder Клієнт (підписка): context.bindService(intent, connection, flags); onServiceConnected(ComponentName, IBinder) { ... } Сервіс (віддача інтерфейсу): onBind(Intent) { ... }
    33. 33. Сервіси <ul><ul><li>Локальний &quot;зв'язківець&quot; </li></ul></ul><ul><ul><li>Передача повідомлень (Messanger) </li></ul></ul><ul><ul><li>AIDL (аналогії: Java RMI, SOAP) </li></ul></ul>
    34. 34. Компоненти <ul><ul><li>Активності (Activities) </li></ul></ul><ul><ul><li>Сервіси (Services) </li></ul></ul><ul><ul><li>Контент-провайдери (Content Providers) </li></ul></ul><ul><ul><li>Отримувачі широкомовних повідомлень (Broadcast Receivers) </li></ul></ul>
    35. 35. Контент-провайдери <ul><ul><li>Надають доступ до вашого набору даних content:// my.content.authority /place/345 authority, визначається в маніфесті </li></ul></ul><ul><ul><li>Інші компоненти працюють з ними через ContentResolver </li></ul></ul><ul><ul><li>Приклад стандартного провайдера: контакти </li></ul></ul>
    36. 36. Компоненти <ul><ul><li>Активності (Activities) </li></ul></ul><ul><ul><li>Сервіси (Services) </li></ul></ul><ul><ul><li>Контент-провайдери (Content Providers) </li></ul></ul><ul><ul><li>Отримувачі широкомовних повідомлень (Broadcast Receivers) </li></ul></ul>
    37. 37. Broadcast Receiver <ul><ul><li>Зміна часового поясу </li></ul></ul><ul><ul><li>Завантаження системи </li></ul></ul><ul><ul><li>Вимкнення телефону </li></ul></ul><ul><ul><li>Для того, щоб зробити розумні сервіси: </li></ul></ul><ul><ul><ul><li>Зміна стану заряду батареї </li></ul></ul></ul><ul><ul><ul><li>Підключення «зарядки» </li></ul></ul></ul>
    38. 38. Ваша черга Роман Мазур Керівник Android/Java відділу Stanfy [email_address] Skype: roman.mazur.f

    ×