我试图了解我的应用可能会使用内容提供商来管理其数据的情况。我对向其他应用程序提供数据不感兴趣,就像sqlite上面的一般抽象/接口一样。
因此,为了简化框架,我的问题是:像Youtube这样的应用是否需要内容提供商?我在本地缓存的上下文中提出问题。更广泛地说:任何行为类似搜索引擎的应用都需要使用contentProvider / sqlite吗?
例如我了解天气应用程序可能会使用内容提供商,因为天气数据不会经常变化,7天预测不会从小时变化到小时。因此,从这个意义上讲,我可能会使用contentProvider,以便每次用户检查时都不会查询服务器,而是每三个小时检查一次。
但是对于像Youtube这样的应用,允许用户搜索数据,我会在contentProvider中添加什么?这样的缓存有什么优势?我把搜索结果,播放列表,收藏夹? Quora还可以将趋势内容缓存在contentProvider中,因为这可能不会经常改变吗?
这些数据应该存储在内存缓存中而不是ContentProvider吗?并且确实考虑到Youtube提供视频。我真的希望在这里得到一些专家的答案。感谢。
答案 0 :(得分:0)
在我看来,ContentProvider是一种数据存储封装,它为查询,插入,删除等数据操作提供了一些接口。使用ContentProvider的客户端不关心如何在ContentProvider中存储数据。 ContentProvider可以在内存中使用数据库,文件甚至临时生成的数据。因此,ContentProvider的主要目的是促进应用程序或流程之间的数据共享。
当数据是本地数据时,最好使用ContentProvider,如联系人信息,呼叫日志,待办事项列表等。我不认为Youtube在本地存储视频是一个不错的选择,因为数据量是无限的。 Youtube旨在访问存储在远程Web服务器中的数据。但我并不是说Youtube根本不会使用ContentProvider。仍然可以在本地存储某些类型的数据以获得更好的用户体验。例如,Youtube可以使用ContentProvider存储用户的播放历史记录,以便用户可以稍后浏览他/她的播放历史记录,即使手机无法访问网络。