2011-05-22 21 views
0

我目前正在编写一个应用程序,它包含一个服务和一个活动。该服务正在后台运行,进行一些实时音频处理。如果用户想要获取有关正在运行的服务的某些信息或想要更改服务的设置,则该活动将开始并绑定到该服务。在Android上使用Activity和Service之间的同步和异步通信

目前我正在使用异步信使系统在服务和活动之间进行通信。例如,服务可以通过消息向活动发送一些结果,活动可以处理该消息并显示结果。这工作正常,但为每个通信编写消息传递的东西是有压力的。并不总是需要。有时我只想问服务,如果一个标志设置或不。如果我这样做异步,我必须发送一个消息到服务,该服务要求标志的值,服务然后发送消息回活动来回答请求。

所以我想有一些可以同步访问服务的getter和setter。这可以通过使用活页夹来完成,这也起作用。

问题是,我有时需要同步通信来获取标志等的值,有时我需要异步通信将结果从服务推送到活动。所以我需要的是一个活页夹和一个信使。但我不知道如何做到这一点,因为服务只能从onBind()方法返回一个对象,无论是一个活页夹对象或一个信使对象。

对于如何完成这项工作或其他一些方法来实现活动和服务之间的异步和同步通信,您有什么建议吗?

提前致谢!

托比亚斯

回答

1

如果您已经绑定到服务,您的活动可以提供一个监听对象的服务,在事件发生时该服务将然后调用。

您只需确保在从服务中解除绑定之前取消注册该侦听器对象,并在活动被销毁之前执行这两个操作,以便您的服务不会对强制引用已停止的活动结束。