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

3
我对Android还不太熟悉。我需要做的是在活动和服务之间本地发送数据。发送的信息很敏感,不能被其他应用程序捕获。如果我理解正确,这就排除了使用广播和onBind()函数?
因此,活动需要向服务发送一些字符串参数。同时,它需要以某种方式告诉服务哪个活动启动了它,以便服务可以回复到正确的类,因为许多不同的活动将使用此服务。一旦服务通过http请求获取了信息,它就应该将该数据(仅为长字符串,稍后将进行解析)发送回启动它的活动。我该如何处理这个问题?使用静态变量/函数不是一个选择,因为许多活动将使用此服务。当然,可以使用静态数组来保存这些类,但那看起来很丑...只能通过意图发送简单的变量(而不是对象)吗?一定有更好的方法来解决这个问题。我已经在网上冲浪了几个小时。任何帮助都将不胜感激。
编辑

Android开发者网站上的示例http://developer.android.com/reference/android/app/Service.html#stopSelf(int)对于实现本地绑定非常有帮助。

对于那些感兴趣的人,这里有一些我目前实现的更多信息:

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

3
这排除了使用广播和onBind()函数的方法,如果我理解得正确的话?
通过本地的Binder在客户端和服务之间交换数据是JVM内部的本地方法调用。
如果您支持API Level 4及更高版本,则还可以在Intent上使用setPackage()来安全地向特定包发送广播。
如何操作呢?在使用startService()或bindService()时,在Intent中添加额外信息。或者调用本地Binder上的方法。

谢谢你的回答!当你说它可以被信任地仅在本地运行时,我选择了本地绑定器。 - Everlost

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接