2

我有一个应用程序,它有一个运行 STICKY 的服务,如果有工作要做,即使用户关闭应用程序服务工作直到完成她的工作。

看,我已经按照教程Android 示例:使用消息传递在 Activity 和服务之间进行通信并适应我的应用程序,但是当我尝试发送消息时,我的服务或客户端没有收到。

我还需要像 ArrayList 一样传递更复杂的参数,工作流程是这样的

  1. 用户启动我的应用,应用启动服务
  2. 用户在应用程序中按下按钮,应用程序向服务发送信号(可以是整数)
  3. 该服务从 Internet 获取数据,处理并将此数据发送到应用程序(如果正在运行),如果未运行,则该服务通知用户获取新数据
  4. 如果一段时间后没有从服务器收到任何内容,则服务停止。

问题是如何在服务和应用程序之间传递复杂的对象?

4

1 回答 1

1

Message您可以在using中传递复杂对象setData(android.os.Bundle)。Bundles 需要Parcelable数据以便它们可以被序列化,但为了方便起见,它支持基本类型(例如整数和字符串)的 ArrayList。如果您的列表包含自定义对象,您将需要使它们实现Parcelable并使用putParcelableArrayList(String key, ArrayList<? extends Parcelable> value).

如果您的数据非常复杂/结构化,您还可以考虑使用Content Provider。有一个初始学习曲线,但提供者非常适合某些情况。

于 2013-02-25T03:21:30.373 回答