YouTube

Got a YouTube account?

New: enable viewer-created translations and captions on your YouTube channel!

Russian subtitles

← Почему контент-провайдеры важны

Get Embed Code
10 Languages

Showing Revision 2 created 01/11/2015 by Aygul Zagidullina.

  1. Прежде чем мы возьмёмся и построим
    контент-провайдер,
  2. вполне допустимо для вас спросить,
    ну, почему.
  3. Простейший ответ — это потому, что он
    позволяет вам
  4. безопасно и эффективно делиться вашими
    данными через границы приложения,
  5. абстрагируясь от основного источника
    данных, будь то SQLite как
  6. это или файлы или действительно что-либо
    ещё. Так что другие
  7. приложения могу получить к нему доступ
    без необходимости понимать, как
  8. вы его сохранили. На самом деле API
    календаря, SMS, контактов
  9. работают таким образом, используя общие
    контент-провайдеры.
  10. Мы поделимся нашей базой данных погоды
    позже, но если
  11. вы не планируете раскрывать данные
    вашего приложения, вы,
  12. вероятно, думаете, что можете пропустить
    этот кусочек, верно? Ну,
  13. почти, во многих случаях вы мог ли бы,
  14. но на самом деле не должны. Например, в
    приложении Sunshine мы используем
  15. SQLite. Но вы могли бы хранить данные в
  16. файлах, динамических runtime-данных
    или даже просто другой
  17. библиотеке базы данных. Используя
    контент-провайдеры, вам проще
  18. потенциально изменить источник данных и
  19. гораздо проще для кого-либо другого
    управлять
  20. UI-слоем кода без необходимости понимать
  21. глубины вашей реализации хранения данных.
  22. В UI-слое это общий механизм,
    возвращающий курсоры.
  23. Они же возвращаются базами данных SQLite.
    Так что
  24. если ваша реализация слоя данных
    изменится, то будет затронут
  25. ваш контент-провайдер. Тем не менее, в
    данный момент это просто ваш код,
  26. это здесь присутствует большое количество
    шаблонов ради
  27. следования аккуратному паттерну дизайна.
    Ну, имейте в виду, что
  28. поскольку мы обеспокоены фреймворком,
    все данные обрабатываются
  29. через контент-провайдеры. Так что если вы
    хотите взаимодействовать с
  30. чем-либо за пределами вашего приложения,
    как отправка данных в
  31. виджет или возвращение результатов поиска
    из более нового приложения, для этого
  32. вам тоже необходим контент-провайдер.
    На самом деле, так
  33. работают виджеты Google Play Store и
    Gmail. А также
  34. возможность получать результаты поиска из
    Google Play. Кроме того существует, куча
  35. API, предназначенных для оптимизации
    процесса синхронизации и запроса данных
  36. и обновления UI, соответственно. И все
    они также ожидают контент-провайдеры.
  37. Это включает синхронизационные адаптеры и
    лоадеры курсора. Что делает ваше
  38. приложение способным эффективно
    синхронизироваться с вашим сервером,
  39. загружать данные в ваш слой и что
    включает встроенные контент-наблюдатели,
  40. которые будут автоматически обновлять ваш
    UI при изменении основных данных. Вы
  41. могли бы, конечно, построить всё это
    самостоятельно, но
  42. в определённый момент преимущество,
    которое вы получили, не начав
  43. с написания контент-провайдера,
    теряется в процессе
  44. необходимости воссоздать все полезные
    кластеры, используемые его.
  45. Мы рассмотрим публикацию вашего
    контент-провайдера и использование Lotus
  46. для эффективного доступа к нему позже в
    этом уроке. И мы исследуем
  47. синхронизационные адаптеры в шестом уроке,
  48. когда мы будем рассматривать
    эффективные фоновые обновления. Но
  49. сначала Дэн собирается показать вам, как
    на самом деле построить контент-провайдер.