如何在本地活动和服务之间来回发送数据

时间:2010-08-13 14:24:12

标签: android android-intent android-activity service

我对Android有点新鲜。我需要做的是在本地活动和服务之间来回发送数据。发送的信息很敏感,不能被其他应用程序接收。如果我理解正确的话,这会排除使用广播和onBind()函数吗?

因此活动需要向服务发送一些字符串参数。此外,它还需要告诉服务哪个活动启动它,以便服务可以回复正确的类,因为许多不同的活动将使用此服务。一旦服务通过http请求获取信息,就可以将该数据(只是一个稍后将被解析的长字符串)发送回启动它的活动。我该怎么做呢?使用静态变量/函数不是一种选择,因为许多活动将再次使用此服务。当然可以使用静态数组来保存类,但这看起来很难看......只能通过意图发送简单变量(而不是对象)?必须有更好的方法来做到这一点。我在网上冲浪了好几个小时。任何帮助将不胜感激。

修改

在Android开发者[http://developer.android.com/reference/android/app/Service.html#stopSelf(int)]上找到的示例对于实现本地绑定器有很大帮助。

对于那些感兴趣的人,到目前为止,有关我的实施的更多信息。

  1. 调用onServiceConnected函数后,将调用服务中的函数来设置绑定到哪个活动。之后,服务和活动可以来回互动。
  2. 确保服务类中的线程具有处理程序。这使线程在完成任务后能够向其处理程序发送消息。然后,处理程序将服务的结果发送回其绑定活动。通过处理程序执行此操作可确保应用程序在完成此操作后返回主线程。

1 个答案:

答案 0 :(得分:3)

  

如果我理解正确的话,这会排除使用广播和onBind()函数吗?

客户端和服务之间通过本地Binder交换的数据是JVM中的本地方法调用。

如果您支持API级别4及更高版本,则还可以setPackage()使用Intent将广播安全地发送到特定包。

  

我该怎么做?

在您使用IntentstartService()的{​​{1}}上添加额外内容。或者在本地bindService()上调用方法。