android - 内容提供商或资源、 Activity 、服务合作

标签 android service android-contentprovider

我有一个关于 Android 设计的简单方法问题。

我设想了一个提供服务和 Activity 的场景。服务和 Activity 都需要读取/写入相同的数据。基本思想是实时播放列表:播放列表的服务会在播放完毕后从列表中“弹出”一首歌曲,但该应用还可以通过添加或删除歌曲来编辑列表。

我考虑过将 ContentProvider 用于实际的播放列表,认为这很简单,但我在 Internet 上可以找到的所有 ContentProvider 示例似乎都过于复杂或只涉及 SQLite。

另一种方法是在我的资源中保留一个简单的文件,并从服务和应用程序访问它。

这里哪种方法似乎更好?如果我确实应该使用 ContentProvider,有人可以指导我实现最简单的实现,最好不涉及 SQLite 吗?从我之前的看法来看,ContentProvider 对于我的简单目的来说似乎过于复杂。

谢谢大家的意见! -追逐

最佳答案

ContentProvider 可以随心所欲地保存委托(delegate)给它的数据。通常,这意味着 SQLite,因为到 ContentProvider 接口(interface)的映射是直观的。

但是,只要您的 ContentProvider 实现了 insert()、update()、delete() 和 query() 操作,(或者实现了使用提供者的应用程序需要实现的功能来完成它的工作)您可以使用您喜欢的任何机制保存进出数据。随意将其存储在 SQLite 数据库、文件或其他任何内容中。

请记住,您的 ContentProvider 可能会被终止并重新启动,甚至可能会被垃圾收集并稍后重新构造,因此您需要使用一些能够防止类消失和重新初始化的东西。

在您的情况下,您可能不关心重新启动后的持久性(谁关心重新启动后播放的音乐列表是否存在),因此静态变量中的某种列表应该足够了。

关于android - 内容提供商或资源、 Activity 、服务合作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4755984/

相关文章:

android - 返回需要很长时间

android - 网络用户目录的设置gradle

android - 如何测试 Android ActionBar 子菜单?

Android 服务 : Process vs. 没有

Android绑定(bind)服务,当 Activity 解除绑定(bind)时会发生什么?

安装时出现 Android Studio 问题

c++ - 如何捕获从 Windows 服务启动的 session 注销

android - ContentResolver.insert() 没有立即反射(reflect)出来?

Android 内部 URI 架构原因

android - 如何使用 SyncAdapter 处理远程服务器的 RESTful 更新