我想创建一个库,它具有从温度传感器读取值并进行一些处理的服务。该服务将继续监控传感器值,并在检测到高值时发出警报。我想使用这个库构建几个应用程序。我打算将我的库添加为每个应用程序的依赖项,如果一个应用程序启动了我的服务,请说“温度服务"然后其他应用程序应该使用相同的服务而不创建新服务。
此外,当服务启动时,它应该无限期运行。当我将来运行一个新的应用程序时,它应该能够绑定到当前正在运行的服务。
我尝试使用IntentService,但是当我杀死我的应用程序时,服务也会停止。
Intent i = new Intent(this.getBaseContext(), MyTestService.class);
i.putExtra("foo", "bar");
startService(i);
如何解决我的问题?
答案 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进行进程间通信示例使用两个应用程序,但您可以创建多个客户端应用程序。