我想问一些例子,其中两个不同的活动(第一个活动中的按钮打开第二个活动)正在与一个服务(AIDL等)通信。我尝试过许多不同的教程,但它们都只是关于如何使一个活动变成一个服务。
huwehgph1#
这可能是旧的,但我会尝试回答它无论如何...在Android中,由于一次只能将一个Activity绑定到一个Service,并且一次只能显示一个Activity,因此没有任何真实的的理由希望一次绑定两个Activity。但是,如果您愿意,最好的解决方案是在onResume()方法中绑定Service,然后在onPause()方法中解除绑定,这样您就可以给予两个不相关的Activity访问服务,同时一次只能绑定一个Activity。
Activity
Service
onResume()
onPause()
91zkwejq2#
每个Activity负责绑定和解除绑定Service。这通常是在onResume/onPause或onStart/onStop中完成的,具体取决于您的要求。一个Activity不能将另一个Activity绑定到Service。事情就是这样。:)
onResume
onPause
onStart
onStop
dkqlctbz3#
您可以使用Messenger来提供IPC通信,而无需使用AIDL。这就是您如何将多个活动绑定到一个服务。如果您需要服务与远程进程通信,那么您可以使用Messenger为您的服务提供接口。此技术允许您执行进程间通信(IPC),而无需使用AIDL。看看这个链接。当你看到代码时,你会发现一个处理程序中有一个切换用例。这将满足你从多个活动/组件发送的多个请求。
3条答案
按热度按时间huwehgph1#
这可能是旧的,但我会尝试回答它无论如何...
在Android中,由于一次只能将一个
Activity
绑定到一个Service
,并且一次只能显示一个Activity
,因此没有任何真实的的理由希望一次绑定两个Activity。但是,如果您愿意,最好的解决方案是在
onResume()
方法中绑定Service
,然后在onPause()
方法中解除绑定,这样您就可以给予两个不相关的Activity访问服务,同时一次只能绑定一个Activity。91zkwejq2#
每个
Activity
负责绑定和解除绑定Service
。这通常是在onResume
/onPause
或onStart
/onStop
中完成的,具体取决于您的要求。一个Activity
不能将另一个Activity
绑定到Service
。事情就是这样。:)dkqlctbz3#
您可以使用Messenger来提供IPC通信,而无需使用AIDL。这就是您如何将多个活动绑定到一个服务。
如果您需要服务与远程进程通信,那么您可以使用Messenger为您的服务提供接口。此技术允许您执行进程间通信(IPC),而无需使用AIDL。
看看这个链接。当你看到代码时,你会发现一个处理程序中有一个切换用例。这将满足你从多个活动/组件发送的多个请求。