如何在android中无限期地运行可共享服务?

时间:2017-07-19 06:21:23

标签: android android-service

我想创建一个库,它具有从温度传感器读取值并进行一些处理的服务。该服务将继续监控传感器值,并在检测到高值时发出警报。我想使用这个库构建几个应用程序。我打算将我的库添加为每个应用程序的依赖项,如果一个应用程序启动了我的服务,请说“温度服务"然后其他应用程序应该使用相同的服务而不创建新服务。

此外,当服务启动时,它应该无限期运行。当我将来运行一个新的应用程序时,它应该能够绑定到当前正在运行的服务。

我尝试使用IntentService,但是当我杀死我的应用程序时,服务也会停止。

Intent i = new Intent(this.getBaseContext(), MyTestService.class);
i.putExtra("foo", "bar");
startService(i);

如何解决我的问题?

2 个答案:

答案 0 :(得分:1)

为此目的,您必须使用Android接口定义语言,并按照this

进行详细信息的进程间通信(IPC)

答案 1 :(得分:1)

您应该使用已启动的服务,而不是使用IntentService因为Intent Service在工作完成后会自行停止。

因此,如果要继续运行服务,则需要使用OnServiceConnected()方法创建服务并使用返回值STICKY,该方法是Service类中的回调方法。

对于跨多个应用程序的通信,您需要实现AIDL 并共享相同的界面以与您的应用程序进行通信。

Android Interface Definition Language (AIDL)

  

Aidl实施

     

已实施的服务

     

IPC in android

     

实施本地通话

Android Interface Definition Language (AIDL) and Remote Service

上面的链接有完整的演示如何创建和使用Service和AIDL进行进程间通信示例使用两个应用程序,但您可以创建多个客户端应用程序。