fragments&loaders

22
FRAGMENTS&LOADERS Новый взгляд на Activity

Upload: roman-grigoryev

Post on 23-Jun-2015

1.677 views

Category:

Education


0 download

DESCRIPTION

Обзор android-compatibility\v4 - Fragments&Loaders

TRANSCRIPT

Page 1: Fragments&Loaders

FRAGMENTS&LOADERS

Новый взгляд на Activity

Page 2: Fragments&Loaders

Содержание

Fragments Loaders API Demos v4

Page 3: Fragments&Loaders

Проблема перенасыщенной Activity

Activity - 141 метод Для работа простейшего приложения

Вам потребуется переопределить кучу из них

Для методов, связанных с Dialogs, Menus, Activity Results, возникают большие Switch

Сквозная функциональность функционал присутствующий в

нескольких Activity ActionBar MainMenu

Page 4: Fragments&Loaders

Решение проблемы №1

Явное делегирование Функционал инкапсулируется в отдельном

классе - Manager Методы жизненного цикла Activity напрямую

вызываются каждого Manager Manager-ы явно друг на друга ссылаются

Недостатки Трудное добавление/удаление Manager в Activity Дублирование кода при невозможности

отнаследоваться от базовой Activity Громоздкость в методах жизненного цикла

Page 5: Fragments&Loaders

Решение проблемы № 2

Упрощающий жизнь собственный “framework” (Aspects) Наследуемся от Aspects Методы жизненного цикла Activity вызываются

автоматически с помощью AspectManager Наследование от *AspectedActivity Aspect-ы могут получить другие Aspect-ы из

AspectManager Недостатки

Слабая документированность Не все метода жизненного цикла охвачены Поддержка управления только из кода -

нет возможности их .xml

Page 6: Fragments&Loaders

Решение проблемы №3

Точнее android-compatibility\v4

Fragments

Page 7: Fragments&Loaders

История

Появились в Android 3.0 Презентуется как UI новинка Побочный эффект – решение нашей

проблемы Вышли как дополнение для Android

<3.0Android Compatibility package, revision 1 Именно это package и был исследован 3.0 пока 0.3%

Page 8: Fragments&Loaders

Внешнее описание

Часть Activity – часть UI или часть логики

FragmentManager - Fragment знает о других Fragment-ах

Жизненные цикл Fragment совпадает с жизненным циклом Activity

Находка Fragmented layout

Page 9: Fragments&Loaders

Жизненныйцикл Fragment

FragmentActivity FragmentManager

Page 10: Fragments&Loaders

Находка Fragmented layout

Page 11: Fragments&Loaders

UI Fragment - <fragment/>

Page 12: Fragments&Loaders

NUI Fragment- FragmentTransaction

Page 13: Fragments&Loaders

Взаимосвязь - Fragment Manager

Page 14: Fragments&Loaders

Полезные Fragments

ListFragment DialogFragment

LoggingFragment - его нет, но очень полезный

Page 15: Fragments&Loaders

Интересности и проблемы

Retain Instance (see Demos) Fragments Stack (see Demos) CursorAdapter - он тут свой

Activity создается два раза во время выдвижения клавиатуры – и это нормально – два configuration change

Проблема именно compatibility редакции один NUI fragment В landscape layout 2 UI fragment в layout.xml В portrait layout 1 UI fragment в layout.xml При смене ориентации: IllegalStateException: Fragment did not create

a view. Пытается найти 2 UI fragment и вместо него берет NUI fragment Связанно с понятием container - магия...

Page 16: Fragments&Loaders

Утилитные полезные классы

Loaders

Page 17: Fragments&Loaders

Loader

Асинхронный загрузчик AsyncTaskLoader – абстрактный класс,

основанный на AsyncTask CursorLoader – его наследник,

работает с Cursor

Page 18: Fragments&Loaders
Page 19: Fragments&Loaders

API Demos v4

Примеры использования Fragments&Loaders

Page 20: Fragments&Loaders

API Demos

Идет в поставке с compatibility package \android-sdk-windows\

android-compatibility\v4\samples\ApiDemos\ Внимание - target version 11 - Android 3.0 Нам интересно: App/Fragment support

Fragment*Support Layout Retain Instance Dialog or Activity Menu

Page 21: Fragments&Loaders

Почему они мне так понравились

Fragments - Разделение логики Fragments - Отличная инкапсуляция логики Имеет вид строгого шаблон

Помощь новичкам Рамки для фантазии программистов

Авторитетное готовое решение Sources Inclusive

Всегда можно посмотреть Всегда можно пройтись под debug

Грядет эра honeycomb

Page 22: Fragments&Loaders

Вопросы

Меня зовут Рома Готов к вопросам