MPD2011 | Роман Мазур "С чего начать Android разработчику"

742 views

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
742
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

MPD2011 | Роман Мазур "С чего начать Android разработчику"

  1. 1. З чого почати Android- розробнику
  2. 2. Питання• На що схожий додаток для Android?• З яких компонентів його можна побудувати?• Як організувати роботу додатку?
  3. 3. Android Application Це виКонтакти
  4. 4. Android Application• Програми взаємодіють між собою, формують одне середовище• Відсутність однієї точки входу int main() { printf(“Hello World”); }
  5. 5. Стандартна система з плагінами Стандартна схема організації плагінів http://en.wikipedia.org/wiki/Plug-in_(computing)
  6. 6. Android (з плагінами)Android System Application System Services Package Manager Components Interface
  7. 7. Android (з плагінами)Android System Application System Services Package Manager Components Interface 4 типи компонентів
  8. 8. Компоненти• Активності (Activities)• Сервіси (Services)• Контент-провайдери (Content Providers)• Отримувачі широкомовних повідомлень (Broadcast Receivers) Читаємо http://developer.android.com/guide/topics/fundamentals.html
  9. 9. Компоненти• Активності (Activities)• Сервіси (Services)• Контент-провайдери (Content Providers)• Отримувачі широкомовних повідомлень (Broadcast Receivers)
  10. 10. Активності та задачіАктивність N . . . ЗадачаАктивність 2Активність 1 Стек
  11. 11. Активності та задачіКупівля ПоділитисяІнформація про ап Повний текстПошук Список новин Почитати новиниПропозиції наголовній сторінціВстановити новий ап Читаємо http://developer.android.com/guide/topics/fundamentals/tasks-and-back-stack.html
  12. 12. Активності та задачіКупівля ПоділитисяІнформація про ап Повний текстПошук Список новин Почитати новиниПропозиції наголовній сторінціВстановити новий ап Активність Читаємо http://developer.android.com/guide/topics/fundamentals/tasks-and-back-stack.html
  13. 13. Активність Перегляд списку новин + = Activity
  14. 14. Активність View ViewGroup LinearLayoutTextView RelativeLayout RelativeLayout …ImageView TextView TextView
  15. 15. Активність - GUIsetContentView(view) LinearLayout TextView TextView Image TextView RelativeLayout View TextView RelativeLayout … TextView Image ImageView TextView TextView View TextView Дерево може бути описане за допомогою XML
  16. 16. Ресурси• Графіка (drawable)• Тексти (string)• Стилі (style)• Розмітка (layout)• та ще дуже багато (dimen, color, string-array, …) Читаємо http://developer.android.com/guide/topics/resources/index.html
  17. 17. Конфігурація• Орієнтація екрану• Локаль• Оператор• Розмір екрану• Густина пікселів• …
  18. 18. Життєвий цикл активності• Пам’ятаємо про: – активність має стан, який змінюється під час роботи користувача з нею – активність може бути знищена за ініціативи системи – при цьому потрібно зберегти стан – View вміють зберігати свій стан• Найбанальніший приклад знищення активності: переворот екрану (зміна конфігурації).
  19. 19. Фрагменти• Великий екран – великі зміни• Основний великий будівельний блок вашого апа• Ще цікавіший життєвий цикл• Взаємодію між фрагментами слід здійснюватися через активність
  20. 20. ФрагментиАктивність з одним A Bфрагментом Список Детальна елементів інформація Телефон
  21. 21. ФрагментиA B Планшет
  22. 22. Взаємодія між фрагментами ListFragmentListener + onItemSelected(…) MyListFragment public void onAttach(…) { OneFragmentActivity this.listener = (ListFragmentListener)activity; }void onItemSelected(…) { startActivity(…) public void onDetach() { DualFragmentActivity this.listener = null;} } void onItemSelected(…) { void onListItemClick(…) { fragmentManager this.listener.onItemSelected(…); .beginTransaction() } // modify fragments .commit(); }
  23. 23. Як запускається активність? Активність – це компонент
  24. 24. Активація компонентів• Intent – data URI, type дані, над якими працюємо – action дія, яку потрібно виконати – 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
  25. 25. Маніфест• Основна функція: описати власні компоненти та вказати, як вони можуть активуватися ззовні• Вказує вимоги вашого апа до апаратури та версії Android• Перелічує дозволи, які користувач повинен буде надати апу
  26. 26. Підміняємо сайт на свій додаток<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>
  27. 27. Компоненти• Активності (Activities)• Сервіси (Services)• Контент-провайдери (Content Providers)• Отримувачі широкомовних повідомлень (Broadcast Receivers)
  28. 28. Сервіси• Не пов’язані з UI напряму• Фонові задачі: програвання музики, завантаження даних• Як правило, взаємодію з API якогось сервера бажано реалізовувати через сервіс• Простіший життєвий цикл (суб’єктивно!)• Два типи: з підв’язкою, виконання команд
  29. 29. Компоненти• Активності (Activities)• Сервіси (Services)• Контент-провайдери (Content Providers)• Отримувачі широкомовних повідомлень (Broadcast Receivers)
  30. 30. Контент-провайдери query insert• Надають доступ до вашого update набору даних delete content://my.content.authority/place/345 authority, визначається в маніфесті• Інші компоненти працюють з ними через ContentResolver• Приклад стандартного провайдера: контакти
  31. 31. Компоненти• Активності (Activities)• Сервіси (Services)• Контент-провайдери (Content Providers)• Отримувачі широкомовних повідомлень (Broadcast Receivers)
  32. 32. Broadcast Receiver• Зміна часового поясу• Завантаження системи• Вимкнення телефонуДля того, щоб зробити розумні сервіси:• Зміна стану заряду батареї• Підключення «зарядки»
  33. 33. І ще одна дуже важлива річ…
  34. 34. Головний потік та асинхронні задачі• Виклики методів життєвого циклу завжди виконуються в основному потоці (слідкуйте за ANR!)• AsyncTask – винесення операції в окремий потік• AsyncQueryHandler – запити до контент провайдера в окремому потоці• Все це працює через Handler
  35. 35. Користуйтеся StrictMode!StrictMode.setThreadPolicy( new StrictMode.ThreadPolicy.Builder() .detectAll() .penaltyLog() .build());StrictMode.setVmPolicy( new StrictMode.VmPolicy.Builder() .detectAll() .penaltyLog() .build());
  36. 36. Ваша черга!Роман МазурКерівник Android/Java відділу Stanfyrmazur@stanfy.com.uaSkype: roman.mazur.f

×