【问题标题】:Android library module with extendable service具有可扩展服务的 Android 库模块
【发布时间】:2015-07-16 20:22:09
【问题描述】:

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

  • 作为启动服务工作(始终启动)
  • 在需要时由警报服务启动和重新启动(库中的另一个服务)
  • 从系统引导开始 (BOOT_COMPLETED)
  • 提供订阅某些服务事件的方法(应该在服务的上下文中执行,我的意思是在后台也是如此)

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

实现我的目标最合适的方法是什么? 基础服务应该如何与客户端扩展通信?

【问题讨论】:

    标签: java android android-service android-library


    【解决方案1】:

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

    通信取决于您希望从服务发送到客户端应用的数据。如果它只是一个通知,那么最好的方法是使用BroadcastReceiver。如果你在AndroidManifest.xml注册了一个receiver,即使app没有启动它也会收到intent。

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

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

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

    【讨论】:

    • 您回答了我的问题的一部分,以便您正确理解它。我已经部分实施了。现在我担心自定义客户端代码的后台处理(当客户端应用程序关闭时,它仍然应该从库服务接收事件)。当客户端应用程序终止时,客户端广播接收器会工作吗?
    • 如果BroadcastReceiverAndroidManifest.xml 中声明,它将始终接收意图。如果应用程序关闭,它将启动应用程序并接收意图。
    • 刚刚验证,广播接收器在我的情况下工作得很好,谢谢
    猜你喜欢
    • 2011-12-21
    • 2010-10-23
    • 2012-11-30
    • 1970-01-01
    • 2019-05-31
    • 2018-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多