Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Android上使用活动和服务之间的同步和异步通信_Android - Fatal编程技术网

在Android上使用活动和服务之间的同步和异步通信

在Android上使用活动和服务之间的同步和异步通信,android,Android,我目前正在编写一个应用程序,它由一个服务和一个活动组成。该服务在后台运行,进行一些实时音频处理。如果用户想要获取有关正在运行的服务的一些信息或想要更改服务的设置,则会启动活动并绑定到服务 目前,我正在使用异步messenger系统在服务和活动之间进行通信。例如,服务可以通过消息向活动发送一些结果,活动可以处理此消息并显示结果。这很好,但是为每次交流编写消息传递的内容是很有压力的。而且它并不总是需要的。有时我只想询问服务是否设置了标志。如果我异步执行此操作,我必须向服务发送一条消息,请求标志的值,

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

目前,我正在使用异步messenger系统在服务和活动之间进行通信。例如,服务可以通过消息向活动发送一些结果,活动可以处理此消息并显示结果。这很好,但是为每次交流编写消息传递的内容是很有压力的。而且它并不总是需要的。有时我只想询问服务是否设置了标志。如果我异步执行此操作,我必须向服务发送一条消息,请求标志的值,然后服务必须向活动发送一条消息以响应请求

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

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

您对如何实现这一点或其他实现活动和服务之间异步和同步通信的方法有何建议

提前谢谢


Tobias

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

您只需要确保在从服务解除绑定之前注销该侦听器对象,并在活动被销毁之前执行这两项操作,这样您的服务就不会以对已失效活动的强引用结束