【发布时间】:2015-05-12 09:29:12
【问题描述】:
我有一个活动和一个本地绑定服务。我已经启动了绑定服务并且运行良好,所以我可以通过服务器/绑定器接口上的函数处理从客户端到服务器的通信。
但是我需要双向通信,服务在某些时候需要通知活动(和用户)发生了某事,并且需要在继续之前等待用户操作。换句话说,我需要服务器对客户端的调用是同步的或阻塞的。 IE。当服务调用一个函数时,它会将一些参数传递给客户端,这将触发一个 AlertDialog 供用户使用,它们的选项将确定返回给服务的返回状态代码。在此之前,我希望服务暂停并等待它收到响应,然后确定它从那里做什么(服务继续运行,服务关闭等)
那么 Android 中有没有办法做到这一点?我需要获取对我的活动的引用,它还需要公开这些阻塞方法,以便我可以从服务中调用它们,然后等待响应。我为我的客户活动提供了一个界面,但我正在努力解决如何将其转移到服务中。我不想使用序列化并将引用添加为 Intent extra,因为客户端和服务都有许多我不想序列化的成员。
谢谢。
【问题讨论】:
-
你有“绑定本地服务”对吗?然后将回调接口传递给服务,它可以稍后调用该接口的某些方法
-
请更具体!如何将接口传递给服务?作为可序列化的意图额外?如果是这样,那么我们已经就最后一个问题进行了讨论,这不是解决方案
-
不,没有额外的,只是传递你的接口的引用
-
您仍然没有具体,我的意思是请发布一些代码。我在哪里传递这个引用,我无法访问构造函数。
-
好的,请阅读:developer.android.com/guide/components/… 您是否看到
/** method for clients */以及您的活动可以调用的一种方法:public int getRandomNumber()?然后添加另一个名为public void registerCallback(MyCallback callback)的方法并从您的活动中调用它
标签: java android android-activity service