我有一个应用程序这个服务运行STICKY如果有工作要做,即使用户关闭应用程序服务工作,直到完成她的工作。
看,我已经按照教程Android Example: Communication between Activity and Service using Messaging进行了调整,并且适应了我的应用,但是当我尝试发送消息时,我的服务或客户端无法收到消息。
此外,我需要传递更复杂的参数,如ArrayList,工作流就像这样
问题是如何在服务和应用程序之间传递复杂对象?
答案 0 :(得分:1)
您可以使用setData(android.os.Bundle)
在Message
中传递复杂对象。 Bundles需要Parcelable
数据,因此它们可以被序列化,但为方便起见,它们支持基本类型的ArrayLists(例如整数和字符串)。如果您的列表包含自定义对象,则需要让它们实现Parcelable
并使用putParcelableArrayList(String key, ArrayList<? extends Parcelable> value)
将其添加到您的捆绑包中。
如果您的数据非常复杂/结构化,您还可以考虑使用Content Provider。有一个初步的学习曲线,但提供者非常适合某些情况。