【问题标题】:when should I use a content provider in android我什么时候应该在 android 中使用内容提供程序
【发布时间】:2015-11-29 20:50:39
【问题描述】:

我试图了解我的应用在什么情况下可能会使用 Content Provider 来管理其数据。我对向其他应用程序提供数据不感兴趣,就像 sqlite 之上的一般抽象/接口一样。

所以,为了便于构建,我的问题是:像 Youtube 这样的应用需要内容提供商吗?我在本地缓存的上下文中问这个问题。更广泛地说:任何表现得像搜索引擎的应用程序都需要使用 contentProvider/sqlite 吗?

例如,我知道天气应用程序可能会使用内容提供程序,因为天气数据不会经常变化,而且 7 天的预报不会每小时变化。因此,从这个意义上说,我可能会使用 contentProvider 以便不会在每次用户检查时都查询服务器,而是我可能会每隔三个小时进行一次检查。

但是对于像 Youtube 这样的应用程序,允许用户搜索数据,我会在 contentProvider 中放入什么?这种缓存有什么优势?我要放搜索结果、播放列表、收藏夹吗? Quora 将热门内容缓存在 contentProvider 中是否有意义,因为这可能不会经常改变?

是否应该将此类数据存储在内存缓存中,而不是 ContentProvider?是的,确实考虑到 Youtube 提供视频。我真的希望在这里得到一些专家的答案。谢谢。

【问题讨论】:

    标签: android sqlite caching android-contentprovider


    【解决方案1】:

    在我看来,ContentProvider 是对数据存储的一种封装,它为查询、插入、删除等数据操作提供了一些接口。使用 ContentProvider 的客户端并不关心数据在 ContentProvider 中的存储方式。 ContentProvider 可以使用数据库、文件,甚至是内存中临时生成的数据。所以 ContentProvider 的主要目的是促进应用或进程之间的数据共享。

    如果数据是本地的,比如联系人信息、通话记录、待办事项列表等,最好使用 ContentProvider。我认为 Youtube 将视频存储在本地不是一个好的选择,因为数据量是无限的。 Youtube 旨在访问存储在远程 Web 服务器中的数据。但我并不是说 Youtube 根本不会使用 ContentProvider。为了更好的用户体验,仍有一些数据可以存储在本地。例如 Youtube 可能会使用 ContentProvider 来存储用户的播放历史记录,以便用户以后即使手机无法访问网络也可以浏览他/她的播放历史记录。

    【讨论】:

      猜你喜欢
      • 2011-08-01
      • 2011-03-11
      • 2010-12-30
      • 1970-01-01
      • 1970-01-01
      • 2012-06-09
      • 1970-01-01
      • 2021-09-07
      相关资源
      最近更新 更多