YouTube

Got a YouTube account?

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

Chinese, Simplified subtitles

← CKjFfcFelrI

CKjFfcFelrI

Get Embed Code
10 Languages

Showing Revision 6 created 04/13/2016 by Udacity Robot.

  1. 在我们继续课程,构建内容提供器之前,
  2. 您随时可以询问原因。
  3. 最简单的答案就是,这有助于您
  4. 通过提取基础数据源,
    这些数据来源可以是此类 SQLite、
  5. 文件或其他任何数据源,
    安全高效地
  6. 跨应用边界分享数据。这样,其他应用
  7. 无需真正了解您存储数据的方式,
  8. 便可访问这些数据。实际上,日历、短信和联系人
  9. API 都采用同样的方式,使用共享的内容提供器。
  10. 稍后我们会分享天气数据库,但如果
  11. 您不计划公开应用的数据,
  12. 则可能会认为可以跳过该步骤,对吗?其实,
  13. 多数情况下这是可行的,
  14. 但真的没必要。例如,在 Sunshine 中我们
  15. 使用 SQ Lite。但您可以在文件、
  16. 动态运行时数据甚或仅仅是其他数据库中
  17. 存储数据。通过利用内容提供器,您可以
  18. 更为轻松地切换移出数据源,
  19. 而且更便于您之外的其他人
  20. 管理 UI 层代码,而无需了解
  21. 数据存储实施的深度。在 UI 层,
  22. 通用机制是返回游标,
  23. SQLite 数据库会返回同样的游标。因此,
  24. 如果您的数据层实现发生变化,则内容提供器
  25. 也会受到影响。但您仍需要立即写入代码,
  26. 这是制作整洁的设计模式
  27. 需要的大量样板文件。请注意,
  28. 只要涉及框架,那么所有的数据都要
  29. 通过内容提供器处理。如果您需要与应用
  30. 之外的内容互动,如向小部件发送数据
  31. 或从更新的应用返回搜索结果,同样需要
  32. 内容提供器。实际上,这正是
  33. Google Play 商店和 Gmail 小部件的工作原理,并且这样
  34. 才能从 Google Play 获取搜索结果。同样,
  35. 大量 API 旨在优化同步和查询数据,
  36. 以及据此更新 UI。所有这些也都需要内容提供器。
  37. 这包括同步适配器和游标加载器,可让
  38. 您的应用有效地与服务器同步,并在 UI 层
  39. 加载数据,而且还包含内置内容监听器,
  40. 可以在基本数据发生变化时自动更新 UI。当然,
  41. 您也可以自行构建所有内容,
  42. 但在某种程度上,开始时不编写内容提供器
  43. 获得的优势会在重新创建使用内容提供器的
  44. 实用集群时丢失。
  45. 在本课的稍后部分,我们会介绍如何发布内容提供器,以及如何
  46. 使用 Lotus 有效访问内容提供器。我们会在第六课
  47. 探索同步适配器以及有效的后台更新。但首先,
  48. Dan 会向您介绍如何实际构建内容提供器。