在服务和活动之间传递ArrayList <t> </t>

时间:2013-02-25 02:15:28

标签: android service

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

看,我已经按照教程Android Example: Communication between Activity and Service using Messaging进行了调整,并且适应了我的应用,但是当我尝试发送消息时,我的服务或客户端无法收到消息。

此外,我需要传递更复杂的参数,如ArrayList,工作流就像这样

  1. 用户启动我的应用,应用启动服务
  2. 用户按下应用程序中的按钮,应用程序发送信号给服务(这可以是整数)
  3. 服务从互联网获取数据,处理并将此数据发送到应用程序(如果正在运行,如果不是服务通知用户新数据)
  4. 如果过了一段时间没有从服务器接收服务停止。
  5. 问题是如何在服务和应用程序之间传递复杂对象?

1 个答案:

答案 0 :(得分:1)

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

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