【发布时间】:2012-12-28 16:48:36
【问题描述】:
是否有一些方法可以像内容提供者一样简单地与服务交互?
我的意思是,例如,对于内容提供商,我们有 getContentResolver():如果您有 Context,则可以轻松查询数据。您甚至不必担心跨进程调用的细节(ContentProvider)。
使用服务,您必须绑定它们,等待建立连接,然后如果您不想泄漏内存,请确保取消绑定它们。更糟糕的是,您必须与AIDL 处理远程服务。
举个例子:
我有一个文件下载器模块。目前有两种方法:内容提供者或服务。要开始每次新的下载,两者都很容易:
- 服务:
startService()。你只需要一个上下文。 - 内容提供者:
getContentResolver()并将新下载插入其队列。您还只需要一个上下文。
但在下载过程中,我想获取一些信息(平均速度、完成百分比……)。问题就在这里:内容提供者更容易沟通。同样,您只需要一个上下文并查询您想要的信息。如果是服务,则需要绑定、解绑,或者构建自己的 AIDL(如果是远程服务)……
我问这个问题是因为在上面的例子中,服务似乎是优于内容提供者的正确方法,至少因为它的名称。
谢谢,
【问题讨论】:
-
你打算如何处理“平均速度”、“完成百分比”信息?
-
@Squonk 我想在 UI 中显示它们以防用户想知道。
标签: android android-service android-contentprovider