在Android上使用Activity和Service之间的同步和异步通信

时间:2011-05-22 17:12:03

标签: android

我目前正在编写一个应用程序,它包含服务和活动。该服务在后台运行,进行一些实时音频处理。如果用户想要获取有关正在运行的服务的一些信息或想要更改服务的设置,则活动将启动并绑定到服务。

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

所以我想要一些可以同步访问服务的getter和setter。这可以通过使用粘合剂来完成,粘合剂也可以。

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

您是否有任何建议可以如何实现?或者其他一些方法来实现活动和服务之间的异步和同步通信?

提前致谢!

托拜厄斯

1 个答案:

答案 0 :(得分:1)

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

您只需要确保在取消绑定服务之前取消注册该侦听器对象,并在销毁活动之前同时执行这两项操作,这样您的服务就不会强烈引用已停用的活动。