2016-08-08 17 views
2

我有一个模块A.实现的服务现在Apps的B和C使用这个库来使用bindService(service, connection, BIND_AUTO_CREATE)服务绑定,但它始终会服务的新实例。我正在使用Messenger将活页夹返回到连接对象。如果我使用AIDL,如何共享相同的服务实例?我已阅读并尝试几乎所有与此问题相关的stackoverflow答案。但是我仍然无法实现我之前解释的内容。与现有服务的Android绑定在多个应用

此项服务的清单是模块A中定义全过程名称为加工属性和出口,使被设定为真。

<service 
     android:name="io.packagename.LocationService" 
     android:enabled="true" 
     android:exported="true" 
     android:permission="android.permission.ACCESS_FINE_LOCATION" 
     android:process="io.packagename.locationService" /> 

LocationService级:

class LocationService extends Service { 
     IncomingHandler handler = new IncomingHandler() 
     Messenger messenger = new Messenger(handler) 

     public IBinder onBind(Intent intent) { 
      Log.d(TAG, "onBind") 
      return messenger.binder 
     } 
     } 

任何帮助深表感谢。

+0

请发表您的服务类 – Lino

+0

@Lino它没有太多的代码,但还是保留了它。谢谢 –

+0

谢谢。您如何检查是否已创建更多服务实例? – Lino

回答

0

引述docs

服务文档中所讨论的,您可以创建一个服务, 既是开始和束缚。也就是说,该服务可以通过 调用startService(),它允许服务无限期运行, 还允许客户端通过调用 bindService绑定到该服务()开始。

一个例子:

例如,音乐播放器可能会发现它很有用,允许其服务 无限期运行,还提供了具有约束力。通过这种方式,活动 可以启动服务,播放一些音乐和音乐继续,即使在用户离开应用程序 发挥。然后,当用户 返回到应用程序时,活动可以绑定到服务,以重新获得对回放的控制。

我相信这适用于您的情况,所以您可以启动服务并根据需要将客户端绑定到它。

+0

这是跨活动。我询问了有关跨应用程序共享的信息 –