我写了2个申请。 MyServiceApplication
和MyActivityApplication
。在启动时,我启动MyService
作为远程服务运行。我希望MyActivityApplication
与它沟通,但MyActivityApplication
无法访问MyServiceApplication
类。我在网上看到的所有示例都通过以下方式将活动绑定到服务:
bindService(new Intent(Binding.this, MyService.class), mConnection, Context.BIND_AUTO_CREATE);
我的应用程序需要与MyService
沟通。该代码基于Google的MessengerService
示例。
我之前提到的问题是我试图绑定的服务是由另一个应用程序启动的,其唯一目的是启动此服务。
有没有办法做到这一点,我可以保持两个应用程序独立?我的想法是,我将拥有第二,第三和第四个应用程序,所有人都可以使用相同的服务进行通信。
您的服务和应用程序之间应该有一个共享库,用于定义用于与绑定服务通信的接口。
更新: 此解决方案和代码示例在编写于2015年时有效 请查找与此相关的其他解决方案。
原始答案: 您可以使用特定操作为服务定义intent-filter,并使用分配给此操作的意图绑定到此服务。
MyServiceApplication:
<service android:name=".MyService">
<intent-filter>
<action android:name="com.some.action.NAME" />
</intent-filter>
</service>
MyActivityApplication:
bindService(new Intent("com.some.action.NAME"), serviceConnection, Context.BIND_AUTO_CREATE);