如何将两个Android活动绑定到一个服务?

10

我希望你能举出一些例子,其中两个不同的活动(第一个活动中的按钮打开第二个活动)正在与一个服务进行通信(AIDL等)。

我尝试了很多不同的教程,但它们只涉及如何创建一个活动→一个服务。

3个回答

14

这可能是老问题了,但我仍然会尝试回答...

在Android中,由于一次只能绑定一个Activity到一个Service,并且一次只能显示一个Activity,因此没有真正的理由想要同时绑定两个Activity

但如果你愿意,最好的解决方案是在onResume()方法中绑定Service,并在onPause()方法中取消绑定。这可以让两个不相关的活动都可以访问服务,同时一次只绑定一个。


1
确实……我认为这也可能对他有所帮助,http://www.techotopia.com/index.php/Android_Local_Bound_Services_%E2%80%93_A_Worked_Example - gumuruh

3

每个Activity都负责与Service绑定和解除绑定。这通常在onResume/onPauseonStart/onStop中完成,具体取决于您的需求。一个Activity不能将另一个Activity绑定到一个Service中。就是这样。 :)


1
那不是我想要说的事情。 - lauriys
3
我不想让一个活动绑定另一个活动到服务。 我只想知道如何将两个活动绑定到一个服务。 第一个活动启动服务,第二个活动将自己绑定到该服务。 - lauriys

0

您可以使用提供IPC通信的Messenger而不使用AIDL来实现。这就是如何将多个活动绑定到服务的方法。

如果您需要使您的服务与远程进程通信,则可以使用Messenger为您的服务提供接口。这种技术允许您执行进程间通信(IPC),而无需使用AIDL。

请查看此链接。当您查看代码时,您会发现在处理程序中有一个switch case。这将满足您从多个活动/组件发送的多个请求。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接