【问题标题】:Passing ArrayList<T> between service and activity在服务和活动之间传递 ArrayList<T>
【发布时间】:2013-02-25 02:15:28
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: android service


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-30
      • 1970-01-01
      • 1970-01-01
      • 2012-08-29
      • 1970-01-01
      • 2023-03-23
      • 2012-11-23
      • 1970-01-01
      相关资源
      最近更新 更多