与服务交互的简单方法?

6 android android-service android-contentprovider

是否有一些与内容提供商一样简单的服务交互方式?

我的意思是,例如我们有内容提供商getContentResolver():如果您有数据,则可以轻松查询数据Context.您甚至不必担心跨进程调用的细节(ContentProvider).

对于服务,您必须绑定它们,等待建立连接,然后确保在不想泄漏内存时取消绑定它们.更糟糕的是,您必须处理AIDL的远程服务.

以此为例:

我有一个文件下载模块.目前有两种方法:内容提供商或服务.要开始每个新的下载,两者都很容易:

  • 服务:startService().你只需要一个上下文.
  • 内容提供者:getContentResolver()并将新下载插入其队列中.您还需要一个上下文.

但是在下载过程中,我希望获得一些信息(平均速度,完成百分比......).问题出在这里:内容提供商更容易与之沟通.您只需要一个上下文并查询所需的信息.如果是服务,您需要绑定它,取消绑定它,或者构建自己的AIDL(如果它是远程服务)......

我问这个问题是因为在上面的例子中,服务似乎是对内容提供者的正确方法,至少因为它的名称.

谢谢,

Squ*_*onk 4

我建议采用两种方法来做到这一点......

第一个是尝试使用实现Parcelable.

基本上创建您自己的类,该类扩展ResultReceiver然后putExtra(String name, Parceable value调用您Intent从. 然后可以使用来发回数据。如果是您的内部类,它将能够与其 UI 进行交互。startService(Intent intent)ActivityServicesend(int resultCode, Bundle resultData)ResultReceiverResultReceiverActivity

第二种可能性是使用Notifications使用FLAG_ONGOING_EVENT标志。这显然不会出现在其Activity本身中,但会出现在栏中,但您可以使用每个更新的通知创建带有进度和更新文本等的Notification自定义。RemoteView这与 Google Play 在您的设备上安装或更新应用程序时看到的情况类似。