Оцените презентацию от 1 до 5 баллов!
Тип файла:
ppt / pptx (powerpoint)
Всего слайдов:
21 слайд
Для класса:
1,2,3,4,5,6,7,8,9,10,11
Размер файла:
666.04 kB
Просмотров:
61
Скачиваний:
0
Автор:
неизвестен
Слайды и текст к этой презентации:
№1 слайд![Зачем нужны? Как использовать?](/documents_6/c69a084f4b8dd34c065605f1aea39e82/img0.jpg)
Содержание слайда: Зачем нужны? Как использовать?
№2 слайд![Что такое ContentProvider?](/documents_6/c69a084f4b8dd34c065605f1aea39e82/img1.jpg)
Содержание слайда: Что такое ContentProvider?
№3 слайд![Что такое Loader?](/documents_6/c69a084f4b8dd34c065605f1aea39e82/img2.jpg)
Содержание слайда: Что такое Loader?
№4 слайд![Совместная работа](/documents_6/c69a084f4b8dd34c065605f1aea39e82/img3.jpg)
Содержание слайда: Совместная работа ContentProvider-а и Loader-а
CursorLoader перезапрашивает данные при правильном использовании notifiChange и setNotificationUri
Метод setNotificationUri класса Cursor позволяет установить URI данных, изменение которых нужно отслеживать
В методах insert, update, delete вызываем метод notifyChange класса ContentResolver с URI элемента или элементов, подвергшихся изменению
При обновлении потомка, обновляются родители
content://ru.ilapin.recyclerviewandcontentprovider.provider/cities/65
обновит
content://ru.ilapin.recyclerviewandcontentprovider.provider/cities
Работа осуществляется через ContentResolver
№5 слайд![Системные ContentProvider-ы](/documents_6/c69a084f4b8dd34c065605f1aea39e82/img4.jpg)
Содержание слайда: Системные ContentProvider-ы на примере ContactProvider-а 1
Используя информацию из класса-контракта узнать URI данных
ContactsContract.Contacts.CONTENT_URI
Реализовать интерфейс LoaderManager.LoaderCallbacks
В методе onCreateLoader инстанциировать Loader
№6 слайд![Системные ContentProvider-ы](/documents_6/c69a084f4b8dd34c065605f1aea39e82/img5.jpg)
Содержание слайда: Системные ContentProvider-ы на примере ContactProvider-а 2
В методе onLoadFinished написать код обрабатывающий получение данных из Loader-а
В методе onLoaderReset написать код обрабатывающий сброс Loader-а
№7 слайд![Системные ContentProvider-ы](/documents_6/c69a084f4b8dd34c065605f1aea39e82/img6.jpg)
Содержание слайда: Системные ContentProvider-ы на примере ContactProvider-а 3
Вызвать getLoaderManager().initLoader(LOADER_ID, null, this) и передать в него идентификатор Loader-а (int-овое число), Bundle с аргументами (может быть null), и реализацию интерфейса
№8 слайд![Реализация ContentProvider-а](/documents_6/c69a084f4b8dd34c065605f1aea39e82/img7.jpg)
Содержание слайда: Реализация ContentProvider-а 1
На примере списка городов
Создать класс-наследник ContentProvider-а
Реализовать onCreate для легковесной инициализации (БД, UriMatcher)
№9 слайд![Реализация ContentProvider-а](/documents_6/c69a084f4b8dd34c065605f1aea39e82/img8.jpg)
Содержание слайда: Реализация ContentProvider-а 2
Контракт
№10 слайд![Реализация ContentProvider-а](/documents_6/c69a084f4b8dd34c065605f1aea39e82/img9.jpg)
Содержание слайда: Реализация ContentProvider-а 3
Реализовать query для получения данных
№11 слайд![Реализация ContentProvider-а](/documents_6/c69a084f4b8dd34c065605f1aea39e82/img10.jpg)
Содержание слайда: Реализация ContentProvider-а 4
Реализовать insert для вставки данных, принимает Uri данных и данные, возвращает Uri сохранённых данных, getContext().getContentResolver().notifyChange. В нашем случае пустой.
Реализовать delete для удаления данных, принимает Uri данных, условия выборки для удаления, возвращает количество затронутых записей, notifyChange. В нашем случае пустой.
№12 слайд![Реализация ContentProvider-а](/documents_6/c69a084f4b8dd34c065605f1aea39e82/img11.jpg)
Содержание слайда: Реализация ContentProvider-а 5
Реализовать update для обновления данных, принимает Uri данных, данные, условия выборки для обновления, возвращает количество затронутых записей, notifyChange
№13 слайд![Реализация ContentProvider-а](/documents_6/c69a084f4b8dd34c065605f1aea39e82/img12.jpg)
Содержание слайда: Реализация ContentProvider-а 6
Реализовать getType
№14 слайд![Реализация ContentProvider-а](/documents_6/c69a084f4b8dd34c065605f1aea39e82/img13.jpg)
Содержание слайда: Реализация ContentProvider-а 7
Реализовать openAssetFile
№15 слайд![Реализация ContentProvider-а](/documents_6/c69a084f4b8dd34c065605f1aea39e82/img14.jpg)
Содержание слайда: Реализация ContentProvider-а 8
В ContentResolver-е можно регистрировать ContentObserver
№16 слайд![Реализация ContentProvider-а](/documents_6/c69a084f4b8dd34c065605f1aea39e82/img15.jpg)
Содержание слайда: Реализация ContentProvider-а 9
Объявить провайдер в манифесте
№17 слайд![Права доступа и получение](/documents_6/c69a084f4b8dd34c065605f1aea39e82/img16.jpg)
Содержание слайда: Права доступа и получение файлов через ContentProvider-ы
Доступ к ContentProvider-у можно получать не только из приложения, в котором он реализован, но и из других приложений
android:exported=“true”
Можно ограничивать доступ, указывая
android:readPermission="ru.ilapin.recyclerviewandcontentprovider.READ_CITIES“
Для получения файла нужно реализовать метод openAssetFile или подобный ему (openFile)
В методе getType добавить MIME для файла
№18 слайд![Реализация Loader-а на](/documents_6/c69a084f4b8dd34c065605f1aea39e82/img17.jpg)
Содержание слайда: Реализация Loader-а на примере AsyncTaskLoader-а 1
Создать класс-наследник AsyncTaskLoader-а
Реализовать по крайней мере методы loadInBackground и onStartLoading
№19 слайд![Реализация Loader-а на](/documents_6/c69a084f4b8dd34c065605f1aea39e82/img18.jpg)
Содержание слайда: Реализация Loader-а на примере AsyncTaskLoader-а 2
В loadInBackground размещается основная «тяжёлая» логика загрузки, метод будет выполняться не в главном потоке
№20 слайд![Реализация Loader-а на](/documents_6/c69a084f4b8dd34c065605f1aea39e82/img19.jpg)
Содержание слайда: Реализация Loader-а на примере AsyncTaskLoader-а 3
onStartLoading должен содержать минимальную логику по запуску загрузки (вызов forceLoad)
№21 слайд![Спасибо за внимание! Спасибо](/documents_6/c69a084f4b8dd34c065605f1aea39e82/img20.jpg)
Содержание слайда: Спасибо за внимание!
Спасибо за внимание!