具有可扩展服务的Android库模块

时间:2015-07-16 20:22:10

标签: java android android-service android-library

我需要开发一个具有服务组件的android库。服务要求是:

  • 作为已启动的服务(始终启动)
  • 在需要时启动并重新启动警报服务(库中的其他服务)
  • 以系统启动(BOOT_COMPLETED)
  • 开始
  • 提供订阅某些服务事件的方式(应该在服务的上下文中执行,我的意思也是在后台执行)

该服务的目的是为任何客户端(Android应用程序)提供订阅某些应在后台执行的事件的能力。相当于扩展客户端即使在后台也应该收到通知的限制(即使客户端未启动)我可以将其视为服务的扩展(在客户端应用程序的Manifest上重新配置的派生服务)。

实现目标的最恰当方法是什么? 基本服务应该如何与客户端扩展进行通信?

1 个答案:

答案 0 :(得分:1)

因此,第一个客户端必须将此服务添加到他们的AndroidManifest.xml。然后,客户端将根据您的需要从库中调用一些将启动服务或警报服务的方法。

通信取决于您要从服务发送到客户端应用程序的数据。如果它只是一个通知,那么最好的方法是使用BroadcastReceiver。如果您在AndroidManifest.xml注册接收器,即使应用程序未启动,它也会收到意图。

如果要发送大量对象或在服务上调用某些方法,可以使用ServiceConnection和binder。

例如,即使客户端未启动,您也需要客户从您的服务中收到List<Model>。您在BroadcastReceiver中声明了AndroidManifest.xml,根据其意图过滤器,它会收到一些意图。然后通过ServiceConnection绑定到您的服务并传递回调对象。之后,在服务中启动后台线程以加载数据。完成后,您将调用回调方法,您的客户端应用程序将接收数据。

不确定我是否回答了你的问题,因为它有点抽象。