SlideShare a Scribd company logo
1 of 36
З чого почати Android-
     розробнику
Питання
• На що схожий додаток для Android?
• З яких компонентів його можна
  побудувати?
• Як організувати роботу додатку?
Android Application



                           Це ви

Контакти
Android Application
• Програми взаємодіють між
  собою, формують одне середовище
• Відсутність однієї точки входу

           int main() {
             printf(“Hello World”);
           }
Стандартна система з плагінами




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


                          Application

       System
       Services


       Package
       Manager



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


                              Application

       System
       Services


       Package
       Manager



                      Components
                       Interface

                  4 типи компонентів
Компоненти
•   Активності (Activities)
•   Сервіси (Services)
•   Контент-провайдери (Content Providers)
•   Отримувачі широкомовних повідомлень
    (Broadcast Receivers)



                  Читаємо http://developer.android.com/guide/topics/fundamentals.html
Компоненти
•   Активності (Activities)
•   Сервіси (Services)
•   Контент-провайдери (Content Providers)
•   Отримувачі широкомовних повідомлень
    (Broadcast Receivers)
Активності та задачі
Активність N

     .
     .
     .

                  Задача
Активність 2


Активність 1


   Стек
Активності та задачі
Купівля                                                                          Поділитися

Інформація про ап                                                                Повний текст

Пошук                                                                            Список новин
                                                                                   Почитати новини
Пропозиції на
головній сторінці
Встановити новий ап




                    Читаємо http://developer.android.com/guide/topics/fundamentals/tasks-and-back-stack.html
Активності та задачі
Купівля                                                                          Поділитися

Інформація про ап                                                                Повний текст

Пошук                                                                            Список новин
                                                                                   Почитати новини
Пропозиції на
головній сторінці
Встановити новий ап

                                                                       Активність




                    Читаємо http://developer.android.com/guide/topics/fundamentals/tasks-and-back-stack.html
Активність
  Перегляд списку новин




      +


      =
   Activity
Активність
                                                           View
                                                           ViewGroup

                    LinearLayout




TextView    RelativeLayout                RelativeLayout

                                                …


ImageView     TextView             TextView
Активність - GUI
setContentView(view)


                       LinearLayout                                  TextView


                                                                         TextView
                                                             Image
 TextView      RelativeLayout
                                                              View       TextView
                                            RelativeLayout

                                                  …                      TextView
                                                             Image
 ImageView       TextView             TextView                View       TextView




   Дерево може бути описане за допомогою XML
Ресурси
•   Графіка (drawable)
•   Тексти (string)
•   Стилі (style)
•   Розмітка (layout)
•   та ще дуже багато
    (dimen, color, string-array, …)

                    Читаємо http://developer.android.com/guide/topics/resources/index.html
Конфігурація
•   Орієнтація екрану
•   Локаль
•   Оператор
•   Розмір екрану
•   Густина пікселів
•   …
Життєвий цикл активності
• Пам’ятаємо про:
  – активність має стан, який змінюється під час
    роботи користувача з нею
  – активність може бути знищена за ініціативи
    системи
  – при цьому потрібно зберегти стан
  – View вміють зберігати свій стан

• Найбанальніший приклад знищення
  активності: переворот екрану (зміна
  конфігурації).
Фрагменти
• Великий екран – великі зміни
• Основний великий будівельний блок
  вашого апа
• Ще цікавіший життєвий цикл
• Взаємодію між фрагментами слід
  здійснюватися через активність
Фрагменти


Активність з
  одним           A                      B
фрагментом




                Список                Детальна
               елементів             інформація


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



A                B




       Планшет
Взаємодія між фрагментами
                           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();
                }
Як запускається активність?
    Активність – це компонент
Активація компонентів
• 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
Маніфест
• Основна функція: описати власні
  компоненти та вказати, як вони можуть
  активуватися ззовні
• Вказує вимоги вашого апа до апаратури та
  версії 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 якогось
  сервера бажано реалізовувати через сервіс
• Простіший життєвий цикл (суб’єктивно!)
• Два типи: з підв’язкою, виконання команд
Компоненти
•   Активності (Activities)
•   Сервіси (Services)
•   Контент-провайдери (Content Providers)
•   Отримувачі широкомовних повідомлень
    (Broadcast Receivers)
Контент-провайдери                       query
                                                      insert
• Надають доступ до вашого                            update
  набору даних                                        delete
 content://my.content.authority/place/345
                authority, визначається в маніфесті

• Інші компоненти працюють з ними через
  ContentResolver
• Приклад стандартного провайдера:
  контакти
Компоненти
•   Активності (Activities)
•   Сервіси (Services)
•   Контент-провайдери (Content Providers)
•   Отримувачі широкомовних повідомлень
    (Broadcast Receivers)
Broadcast Receiver
• Зміна часового поясу
• Завантаження системи
• Вимкнення телефону

Для того, щоб зробити розумні сервіси:
• Зміна стану заряду батареї
• Підключення «зарядки»
І ще одна дуже важлива річ…
Головний потік та асинхронні задачі
• Виклики методів життєвого циклу завжди
  виконуються в основному потоці (слідкуйте
  за ANR!)
• AsyncTask – винесення операції в окремий
  потік
• AsyncQueryHandler – запити до контент
  провайдера в окремому потоці
• Все це працює через Handler
Користуйтеся StrictMode!
StrictMode.setThreadPolicy(
  new StrictMode.ThreadPolicy.Builder()
    .detectAll()
    .penaltyLog()
    .build()
);
StrictMode.setVmPolicy(
  new StrictMode.VmPolicy.Builder()
    .detectAll()
    .penaltyLog()
    .build()
);
Ваша черга!

Роман Мазур
Керівник Android/Java відділу Stanfy

rmazur@stanfy.com.ua
Skype: roman.mazur.f

More Related Content

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

"Is there life in react without redux" by Babich Sergiy. OdessaJS'2021
"Is there life in react without redux" by Babich Sergiy. OdessaJS'2021"Is there life in react without redux" by Babich Sergiy. OdessaJS'2021
"Is there life in react without redux" by Babich Sergiy. OdessaJS'2021
OdessaJS Conf
 
Лекція №12 Передача параметрів у функцію.pptx
Лекція №12 Передача параметрів у функцію.pptxЛекція №12 Передача параметрів у функцію.pptx
Лекція №12 Передача параметрів у функцію.pptx
ssuserf57884
 

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

Android animations
Android animationsAndroid animations
Android animations
 
Корнілов Андрій
Корнілов АндрійКорнілов Андрій
Корнілов Андрій
 
Design patterns part 2
Design patterns part 2Design patterns part 2
Design patterns part 2
 
[Knowledge Sharing] - Behavioral patterns by Pavlo Serdyuk (UKR)
[Knowledge Sharing] - Behavioral patterns by Pavlo Serdyuk (UKR)[Knowledge Sharing] - Behavioral patterns by Pavlo Serdyuk (UKR)
[Knowledge Sharing] - Behavioral patterns by Pavlo Serdyuk (UKR)
 
Lecture 06. iOS Programming. Основи Objective-C
Lecture 06. iOS Programming. Основи Objective-CLecture 06. iOS Programming. Основи Objective-C
Lecture 06. iOS Programming. Основи Objective-C
 
ASP.Net MVC
ASP.Net MVCASP.Net MVC
ASP.Net MVC
 
Windows 8 and Metro design applications
Windows 8 and Metro design applicationsWindows 8 and Metro design applications
Windows 8 and Metro design applications
 
WebCamp:Front-end Developers Day. Роман Якобчук "FRP + React, building async ...
WebCamp:Front-end Developers Day. Роман Якобчук "FRP + React, building async ...WebCamp:Front-end Developers Day. Роман Якобчук "FRP + React, building async ...
WebCamp:Front-end Developers Day. Роман Якобчук "FRP + React, building async ...
 
ASP.Net basics
ASP.Net basics ASP.Net basics
ASP.Net basics
 
[Knowledge Sharing] - Unit Testing by Pavlo Serdyuk (UKR)
[Knowledge Sharing] - Unit Testing by Pavlo Serdyuk (UKR)[Knowledge Sharing] - Unit Testing by Pavlo Serdyuk (UKR)
[Knowledge Sharing] - Unit Testing by Pavlo Serdyuk (UKR)
 
"Is there life in react without redux" by Babich Sergiy. OdessaJS'2021
"Is there life in react without redux" by Babich Sergiy. OdessaJS'2021"Is there life in react without redux" by Babich Sergiy. OdessaJS'2021
"Is there life in react without redux" by Babich Sergiy. OdessaJS'2021
 
Лекція №12 Передача параметрів у функцію.pptx
Лекція №12 Передача параметрів у функцію.pptxЛекція №12 Передача параметрів у функцію.pptx
Лекція №12 Передача параметрів у функцію.pptx
 
07 - vysnovky z tdd, pohliad pochatkivtsia - vitalii zinchenko it event 2013...
07 -  vysnovky z tdd, pohliad pochatkivtsia - vitalii zinchenko it event 2013...07 -  vysnovky z tdd, pohliad pochatkivtsia - vitalii zinchenko it event 2013...
07 - vysnovky z tdd, pohliad pochatkivtsia - vitalii zinchenko it event 2013...
 
Navchalna programa
Navchalna programaNavchalna programa
Navchalna programa
 
Localizations foss ukr
Localizations foss ukrLocalizations foss ukr
Localizations foss ukr
 

More from ITGinGer

MPD2011 | Дмитрий Дворниченко "Гайдлайны — не предел"
MPD2011 | Дмитрий Дворниченко "Гайдлайны — не предел"MPD2011 | Дмитрий Дворниченко "Гайдлайны — не предел"
MPD2011 | Дмитрий Дворниченко "Гайдлайны — не предел"
ITGinGer
 
MPD2011 | Андрей Михайлов "Как ускорить и удешевить разработку мобильного при...
MPD2011 | Андрей Михайлов "Как ускорить и удешевить разработку мобильного при...MPD2011 | Андрей Михайлов "Как ускорить и удешевить разработку мобильного при...
MPD2011 | Андрей Михайлов "Как ускорить и удешевить разработку мобильного при...
ITGinGer
 
MPD2011 | Галина Рыженко "Дополненная реальность (Augmented reality)"
MPD2011 | Галина Рыженко "Дополненная реальность (Augmented reality)"MPD2011 | Галина Рыженко "Дополненная реальность (Augmented reality)"
MPD2011 | Галина Рыженко "Дополненная реальность (Augmented reality)"
ITGinGer
 
MPD2011 | Олег Донцов "Введение в разработку bada Flash & Web приложений"
MPD2011 | Олег Донцов "Введение в разработку bada Flash & Web приложений"MPD2011 | Олег Донцов "Введение в разработку bada Flash & Web приложений"
MPD2011 | Олег Донцов "Введение в разработку bada Flash & Web приложений"
ITGinGer
 
MPD2011 | Андрей Митрошин "Новые возможности в bada2.0 Обзор функциональности...
MPD2011 | Андрей Митрошин "Новые возможности в bada2.0 Обзор функциональности...MPD2011 | Андрей Митрошин "Новые возможности в bada2.0 Обзор функциональности...
MPD2011 | Андрей Митрошин "Новые возможности в bada2.0 Обзор функциональности...
ITGinGer
 
MPD2011 | Тарас Филатов "Эволюция мобильных приложений. Через Cloud и Social ...
MPD2011 | Тарас Филатов "Эволюция мобильных приложений. Через Cloud и Social ...MPD2011 | Тарас Филатов "Эволюция мобильных приложений. Через Cloud и Social ...
MPD2011 | Тарас Филатов "Эволюция мобильных приложений. Через Cloud и Social ...
ITGinGer
 
MPD2011 | Сергей Клюев "RESTfull iOS with RestKit"
MPD2011 | Сергей Клюев "RESTfull iOS with RestKit"MPD2011 | Сергей Клюев "RESTfull iOS with RestKit"
MPD2011 | Сергей Клюев "RESTfull iOS with RestKit"
ITGinGer
 
MPD2011 | Леонид Юрченко "Продажи внутри мобильных приложений"
MPD2011 | Леонид Юрченко "Продажи внутри мобильных приложений"MPD2011 | Леонид Юрченко "Продажи внутри мобильных приложений"
MPD2011 | Леонид Юрченко "Продажи внутри мобильных приложений"
ITGinGer
 
MPD2011 | Роман Харченко "Самое самое в XCode 4.2 и iOS 5.0 с точки зрения ра...
MPD2011 | Роман Харченко "Самое самое в XCode 4.2 и iOS 5.0 с точки зрения ра...MPD2011 | Роман Харченко "Самое самое в XCode 4.2 и iOS 5.0 с точки зрения ра...
MPD2011 | Роман Харченко "Самое самое в XCode 4.2 и iOS 5.0 с точки зрения ра...
ITGinGer
 
MPD2011 | Тимур Гарифзянов "Субъективный взгляд на WP7"
MPD2011 | Тимур Гарифзянов "Субъективный взгляд на WP7"MPD2011 | Тимур Гарифзянов "Субъективный взгляд на WP7"
MPD2011 | Тимур Гарифзянов "Субъективный взгляд на WP7"
ITGinGer
 
MPD2011 | Павел Кравченко "Гибкие методологии в мобильной разработке"
MPD2011 | Павел Кравченко "Гибкие методологии в мобильной разработке"MPD2011 | Павел Кравченко "Гибкие методологии в мобильной разработке"
MPD2011 | Павел Кравченко "Гибкие методологии в мобильной разработке"
ITGinGer
 
MPD2011 | Александр Егошин "Мобильные игры: разработка – это только полдела"
MPD2011 | Александр Егошин "Мобильные игры: разработка – это только полдела"MPD2011 | Александр Егошин "Мобильные игры: разработка – это только полдела"
MPD2011 | Александр Егошин "Мобильные игры: разработка – это только полдела"
ITGinGer
 
Андрей Чипиленко - "Разработка мобильного приложения для интернет‐мага...
Андрей Чипиленко - "Разработка мобильного	   приложения	    для интернет‐мага...Андрей Чипиленко - "Разработка мобильного	   приложения	    для интернет‐мага...
Андрей Чипиленко - "Разработка мобильного приложения для интернет‐мага...
ITGinGer
 
Стас Городниченко - "Почему мобильная коммерция сейчас интересна для инвестор...
Стас Городниченко - "Почему мобильная коммерция сейчас интересна для инвестор...Стас Городниченко - "Почему мобильная коммерция сейчас интересна для инвестор...
Стас Городниченко - "Почему мобильная коммерция сейчас интересна для инвестор...
ITGinGer
 

More from ITGinGer (14)

MPD2011 | Дмитрий Дворниченко "Гайдлайны — не предел"
MPD2011 | Дмитрий Дворниченко "Гайдлайны — не предел"MPD2011 | Дмитрий Дворниченко "Гайдлайны — не предел"
MPD2011 | Дмитрий Дворниченко "Гайдлайны — не предел"
 
MPD2011 | Андрей Михайлов "Как ускорить и удешевить разработку мобильного при...
MPD2011 | Андрей Михайлов "Как ускорить и удешевить разработку мобильного при...MPD2011 | Андрей Михайлов "Как ускорить и удешевить разработку мобильного при...
MPD2011 | Андрей Михайлов "Как ускорить и удешевить разработку мобильного при...
 
MPD2011 | Галина Рыженко "Дополненная реальность (Augmented reality)"
MPD2011 | Галина Рыженко "Дополненная реальность (Augmented reality)"MPD2011 | Галина Рыженко "Дополненная реальность (Augmented reality)"
MPD2011 | Галина Рыженко "Дополненная реальность (Augmented reality)"
 
MPD2011 | Олег Донцов "Введение в разработку bada Flash & Web приложений"
MPD2011 | Олег Донцов "Введение в разработку bada Flash & Web приложений"MPD2011 | Олег Донцов "Введение в разработку bada Flash & Web приложений"
MPD2011 | Олег Донцов "Введение в разработку bada Flash & Web приложений"
 
MPD2011 | Андрей Митрошин "Новые возможности в bada2.0 Обзор функциональности...
MPD2011 | Андрей Митрошин "Новые возможности в bada2.0 Обзор функциональности...MPD2011 | Андрей Митрошин "Новые возможности в bada2.0 Обзор функциональности...
MPD2011 | Андрей Митрошин "Новые возможности в bada2.0 Обзор функциональности...
 
MPD2011 | Тарас Филатов "Эволюция мобильных приложений. Через Cloud и Social ...
MPD2011 | Тарас Филатов "Эволюция мобильных приложений. Через Cloud и Social ...MPD2011 | Тарас Филатов "Эволюция мобильных приложений. Через Cloud и Social ...
MPD2011 | Тарас Филатов "Эволюция мобильных приложений. Через Cloud и Social ...
 
MPD2011 | Сергей Клюев "RESTfull iOS with RestKit"
MPD2011 | Сергей Клюев "RESTfull iOS with RestKit"MPD2011 | Сергей Клюев "RESTfull iOS with RestKit"
MPD2011 | Сергей Клюев "RESTfull iOS with RestKit"
 
MPD2011 | Леонид Юрченко "Продажи внутри мобильных приложений"
MPD2011 | Леонид Юрченко "Продажи внутри мобильных приложений"MPD2011 | Леонид Юрченко "Продажи внутри мобильных приложений"
MPD2011 | Леонид Юрченко "Продажи внутри мобильных приложений"
 
MPD2011 | Роман Харченко "Самое самое в XCode 4.2 и iOS 5.0 с точки зрения ра...
MPD2011 | Роман Харченко "Самое самое в XCode 4.2 и iOS 5.0 с точки зрения ра...MPD2011 | Роман Харченко "Самое самое в XCode 4.2 и iOS 5.0 с точки зрения ра...
MPD2011 | Роман Харченко "Самое самое в XCode 4.2 и iOS 5.0 с точки зрения ра...
 
MPD2011 | Тимур Гарифзянов "Субъективный взгляд на WP7"
MPD2011 | Тимур Гарифзянов "Субъективный взгляд на WP7"MPD2011 | Тимур Гарифзянов "Субъективный взгляд на WP7"
MPD2011 | Тимур Гарифзянов "Субъективный взгляд на WP7"
 
MPD2011 | Павел Кравченко "Гибкие методологии в мобильной разработке"
MPD2011 | Павел Кравченко "Гибкие методологии в мобильной разработке"MPD2011 | Павел Кравченко "Гибкие методологии в мобильной разработке"
MPD2011 | Павел Кравченко "Гибкие методологии в мобильной разработке"
 
MPD2011 | Александр Егошин "Мобильные игры: разработка – это только полдела"
MPD2011 | Александр Егошин "Мобильные игры: разработка – это только полдела"MPD2011 | Александр Егошин "Мобильные игры: разработка – это только полдела"
MPD2011 | Александр Егошин "Мобильные игры: разработка – это только полдела"
 
Андрей Чипиленко - "Разработка мобильного приложения для интернет‐мага...
Андрей Чипиленко - "Разработка мобильного	   приложения	    для интернет‐мага...Андрей Чипиленко - "Разработка мобильного	   приложения	    для интернет‐мага...
Андрей Чипиленко - "Разработка мобильного приложения для интернет‐мага...
 
Стас Городниченко - "Почему мобильная коммерция сейчас интересна для инвестор...
Стас Городниченко - "Почему мобильная коммерция сейчас интересна для инвестор...Стас Городниченко - "Почему мобильная коммерция сейчас интересна для инвестор...
Стас Городниченко - "Почему мобильная коммерция сейчас интересна для инвестор...
 

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

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