SlideShare una empresa de Scribd logo
1 de 22
Fragments&Loaders Новый взгляд на Activity
Содержание Fragments Loaders API Demos v4
Проблема перенасыщенной Activity Activity - 141 метод Для работа простейшего приложения Вам потребуется переопределить кучу из них Для методов, связанных с Dialogs, Menus, Activity Results, возникают большие Switch  Сквозная функциональность функционал присутствующий в нескольких Activity ActionBar MainMenu
Решениепроблемы№1 Явное делегирование Функционал инкапсулируется в отдельном классе - Manager Методы жизненного цикла Activity напрямую вызываются каждого Manager Manager-ыявно друг на друга ссылаются Недостатки Трудное добавление/удаление Manager в Activity Дублирование кода при невозможности отнаследоваться от базовой Activity Громоздкость в методах жизненного цикла
Решение проблемы № 2 Упрощающий жизнь собственный “framework” (Aspects) Наследуемся от Aspects Методы жизненного цикла Activity вызываются автоматически с помощью AspectManager Наследование от *AspectedActivity Aspect-ы могут получить другие Aspect-ы из AspectManager Недостатки Слабая документированность Не все метода жизненного цикла охвачены Поддержка управления только из кода - нет возможности их .xml
Решение проблемы №3 Точнее android-compatibility4 Fragments
История Появились в Android 3.0 Презентуется как UI новинка Побочный эффект – решение нашей проблемы Вышли как дополнение для Android <3.0Android Compatibility package, revision 1 Именно это package и был исследован 3.0 пока 0.3%
Внешнее описание Часть Activity – часть UI или часть логики FragmentManager - Fragment знает о других Fragment-ах Жизненные цикл Fragment совпадает с жизненным циклом Activity Находка Fragmented layout
Жизненныйцикл Fragment FragmentActivity FragmentManager
Находка Fragmented layout
UI Fragment - <fragment/>
NUI Fragment- FragmentTransaction
Взаимосвязь - Fragment Manager
Полезные Fragments ListFragment DialogFragment LoggingFragment - его нет, но очень полезный
Интересности и проблемы Retain Instance (see Demos) Fragments Stack (seeDemos) CursorAdapter- он тут свой Activity создается два раза во время выдвижения клавиатуры – и это нормально – два configuration change Проблема именно compatibility редакции один NUIfragment В landscape layout 2 UI fragment в layout.xml  В portrait layout 1 UI fragment в layout.xml  При смене ориентации:IllegalStateException: Fragment did not create a view. Пытается найти 2 UIfragment и вместо него берет NUI fragment Связанно с понятием container - магия...
Утилитные полезные классы Loaders
Loader Асинхронный загрузчик AsyncTaskLoader – абстрактный класс, основанный на AsyncTask CursorLoader – его наследник, работает с Cursor
API Demosv4 Примеры использования Fragments&Loaders
API Demos Идет в поставке с compatibilitypackage ndroid-sdk-windowsndroid-compatibility4amplespiDemos Внимание - target version 11 - Android 3.0 Нам интересно:App/Fragment support Fragment*Support Layout Retain Instance Dialog or Activity Menu
Почему они мне так понравились Fragments - Разделение логики Fragments - Отличная инкапсуляция логики Имеет вид строгого шаблон Помощь новичкам Рамки для фантазии программистов Авторитетное готовое решение Sources Inclusive Всегда можно посмотреть Всегда можно пройтись под debug Грядет эра honeycomb
Вопросы Меня зовут Рома Готов к вопросам

Más contenido relacionado

Similar a Fragments&Loaders

«трудности при разработке сложных распределённых систем на Java. способы реше...
«трудности при разработке сложных распределённых систем на Java. способы реше...«трудности при разработке сложных распределённых систем на Java. способы реше...
«трудности при разработке сложных распределённых систем на Java. способы реше...MDDay_4
 
ППП (Пишем Плагины Правильно)
ППП (Пишем Плагины Правильно)ППП (Пишем Плагины Правильно)
ППП (Пишем Плагины Правильно)Anatoly Yumashev
 
Расширяемая платформа для создания и управления автоматизированными тестами н...
Расширяемая платформа для создания и управления автоматизированными тестами н...Расширяемая платформа для создания и управления автоматизированными тестами н...
Расширяемая платформа для создания и управления автоматизированными тестами н...jazzteam
 
Enterprise flex pure mvc, slides, russian
Enterprise flex pure mvc, slides, russianEnterprise flex pure mvc, slides, russian
Enterprise flex pure mvc, slides, russianSergiy Shychynov
 
Enterprise flex pure mvc.v4
Enterprise flex pure mvc.v4Enterprise flex pure mvc.v4
Enterprise flex pure mvc.v4Sergiy Shychynov
 
JavaScript Design Patterns overview by Ksenia Redunova
JavaScript Design Patterns overview by Ksenia RedunovaJavaScript Design Patterns overview by Ksenia Redunova
JavaScript Design Patterns overview by Ksenia RedunovaLohika_Odessa_TechTalks
 
Наталья Чуфырина, Mail.Ru Group, «Как создать команду по автоматизации тестир...
Наталья Чуфырина, Mail.Ru Group, «Как создать команду по автоматизации тестир...Наталья Чуфырина, Mail.Ru Group, «Как создать команду по автоматизации тестир...
Наталья Чуфырина, Mail.Ru Group, «Как создать команду по автоматизации тестир...Mail.ru Group
 
Масштабируемая архитектура фронтенда
Масштабируемая архитектура фронтендаМасштабируемая архитектура фронтенда
Масштабируемая архитектура фронтендаRoman Dvornov
 
Role based access-control
Role based access-controlRole based access-control
Role based access-controlAlex Frolov
 
Automation Flex Applications with Selenium rc
Automation  Flex Applications with Selenium rcAutomation  Flex Applications with Selenium rc
Automation Flex Applications with Selenium rcautomated-testing.info
 
DIOR-DNA, Anton Zvonov, Part 1, Activities (жизненный цикл)
DIOR-DNA, Anton Zvonov, Part 1, Activities (жизненный цикл)DIOR-DNA, Anton Zvonov, Part 1, Activities (жизненный цикл)
DIOR-DNA, Anton Zvonov, Part 1, Activities (жизненный цикл)Антон Звонов
 
Monitoring and Load testing
Monitoring and Load testingMonitoring and Load testing
Monitoring and Load testingFedor Malyshkin
 
Нотации оформления требований
Нотации оформления требованийНотации оформления требований
Нотации оформления требованийJaneKozmina
 
Drupal организация разработки
Drupal   организация разработкиDrupal   организация разработки
Drupal организация разработкиAnna Fedoruk
 

Similar a Fragments&Loaders (20)

«трудности при разработке сложных распределённых систем на Java. способы реше...
«трудности при разработке сложных распределённых систем на Java. способы реше...«трудности при разработке сложных распределённых систем на Java. способы реше...
«трудности при разработке сложных распределённых систем на Java. способы реше...
 
ППП (Пишем Плагины Правильно)
ППП (Пишем Плагины Правильно)ППП (Пишем Плагины Правильно)
ППП (Пишем Плагины Правильно)
 
Расширяемая платформа для создания и управления автоматизированными тестами н...
Расширяемая платформа для создания и управления автоматизированными тестами н...Расширяемая платформа для создания и управления автоматизированными тестами н...
Расширяемая платформа для создания и управления автоматизированными тестами н...
 
Java Framework for Multi-agent Systems
Java Framework for Multi-agent SystemsJava Framework for Multi-agent Systems
Java Framework for Multi-agent Systems
 
Enterprise flex pure mvc, slides, russian
Enterprise flex pure mvc, slides, russianEnterprise flex pure mvc, slides, russian
Enterprise flex pure mvc, slides, russian
 
Symfony 3
Symfony 3Symfony 3
Symfony 3
 
DESIGN PATTERNS? EASY!
DESIGN PATTERNS? EASY!DESIGN PATTERNS? EASY!
DESIGN PATTERNS? EASY!
 
Enterprise flex pure mvc.v4
Enterprise flex pure mvc.v4Enterprise flex pure mvc.v4
Enterprise flex pure mvc.v4
 
Java 9 - кратко о новом
Java 9 -  кратко о новомJava 9 -  кратко о новом
Java 9 - кратко о новом
 
JavaScript Design Patterns overview by Ksenia Redunova
JavaScript Design Patterns overview by Ksenia RedunovaJavaScript Design Patterns overview by Ksenia Redunova
JavaScript Design Patterns overview by Ksenia Redunova
 
Async
AsyncAsync
Async
 
Luxoft async.net
Luxoft async.netLuxoft async.net
Luxoft async.net
 
Наталья Чуфырина, Mail.Ru Group, «Как создать команду по автоматизации тестир...
Наталья Чуфырина, Mail.Ru Group, «Как создать команду по автоматизации тестир...Наталья Чуфырина, Mail.Ru Group, «Как создать команду по автоматизации тестир...
Наталья Чуфырина, Mail.Ru Group, «Как создать команду по автоматизации тестир...
 
Масштабируемая архитектура фронтенда
Масштабируемая архитектура фронтендаМасштабируемая архитектура фронтенда
Масштабируемая архитектура фронтенда
 
Role based access-control
Role based access-controlRole based access-control
Role based access-control
 
Automation Flex Applications with Selenium rc
Automation  Flex Applications with Selenium rcAutomation  Flex Applications with Selenium rc
Automation Flex Applications with Selenium rc
 
DIOR-DNA, Anton Zvonov, Part 1, Activities (жизненный цикл)
DIOR-DNA, Anton Zvonov, Part 1, Activities (жизненный цикл)DIOR-DNA, Anton Zvonov, Part 1, Activities (жизненный цикл)
DIOR-DNA, Anton Zvonov, Part 1, Activities (жизненный цикл)
 
Monitoring and Load testing
Monitoring and Load testingMonitoring and Load testing
Monitoring and Load testing
 
Нотации оформления требований
Нотации оформления требованийНотации оформления требований
Нотации оформления требований
 
Drupal организация разработки
Drupal   организация разработкиDrupal   организация разработки
Drupal организация разработки
 

Fragments&Loaders

  • 3. Проблема перенасыщенной Activity Activity - 141 метод Для работа простейшего приложения Вам потребуется переопределить кучу из них Для методов, связанных с Dialogs, Menus, Activity Results, возникают большие Switch Сквозная функциональность функционал присутствующий в нескольких Activity ActionBar MainMenu
  • 4. Решениепроблемы№1 Явное делегирование Функционал инкапсулируется в отдельном классе - Manager Методы жизненного цикла Activity напрямую вызываются каждого Manager Manager-ыявно друг на друга ссылаются Недостатки Трудное добавление/удаление Manager в Activity Дублирование кода при невозможности отнаследоваться от базовой Activity Громоздкость в методах жизненного цикла
  • 5. Решение проблемы № 2 Упрощающий жизнь собственный “framework” (Aspects) Наследуемся от Aspects Методы жизненного цикла Activity вызываются автоматически с помощью AspectManager Наследование от *AspectedActivity Aspect-ы могут получить другие Aspect-ы из AspectManager Недостатки Слабая документированность Не все метода жизненного цикла охвачены Поддержка управления только из кода - нет возможности их .xml
  • 6. Решение проблемы №3 Точнее android-compatibility4 Fragments
  • 7. История Появились в Android 3.0 Презентуется как UI новинка Побочный эффект – решение нашей проблемы Вышли как дополнение для Android <3.0Android Compatibility package, revision 1 Именно это package и был исследован 3.0 пока 0.3%
  • 8. Внешнее описание Часть Activity – часть UI или часть логики FragmentManager - Fragment знает о других Fragment-ах Жизненные цикл Fragment совпадает с жизненным циклом Activity Находка Fragmented layout
  • 11. UI Fragment - <fragment/>
  • 14. Полезные Fragments ListFragment DialogFragment LoggingFragment - его нет, но очень полезный
  • 15. Интересности и проблемы Retain Instance (see Demos) Fragments Stack (seeDemos) CursorAdapter- он тут свой Activity создается два раза во время выдвижения клавиатуры – и это нормально – два configuration change Проблема именно compatibility редакции один NUIfragment В landscape layout 2 UI fragment в layout.xml В portrait layout 1 UI fragment в layout.xml При смене ориентации:IllegalStateException: Fragment did not create a view. Пытается найти 2 UIfragment и вместо него берет NUI fragment Связанно с понятием container - магия...
  • 17. Loader Асинхронный загрузчик AsyncTaskLoader – абстрактный класс, основанный на AsyncTask CursorLoader – его наследник, работает с Cursor
  • 18.
  • 19. API Demosv4 Примеры использования Fragments&Loaders
  • 20. API Demos Идет в поставке с compatibilitypackage ndroid-sdk-windowsndroid-compatibility4amplespiDemos Внимание - target version 11 - Android 3.0 Нам интересно:App/Fragment support Fragment*Support Layout Retain Instance Dialog or Activity Menu
  • 21. Почему они мне так понравились Fragments - Разделение логики Fragments - Отличная инкапсуляция логики Имеет вид строгого шаблон Помощь новичкам Рамки для фантазии программистов Авторитетное готовое решение Sources Inclusive Всегда можно посмотреть Всегда можно пройтись под debug Грядет эра honeycomb
  • 22. Вопросы Меня зовут Рома Готов к вопросам