如何在Android中使用Intents发送自定义数据对象?

时间:2010-07-30 15:14:20

标签: android

Android中的Intent是在非耦合组件之间传递消息的一种优雅方式,但是如果要使用Intent发送额外数据该怎么办?我知道你可以添加各种值类型,以及实现Parcelable的对象作为附加功能,但这并不真正适合在本地发送用户定义的类型(即不通过远程接口)。有什么想法吗?

3 个答案:

答案 0 :(得分:4)

在您的类型中,您可以实现Serializable接口并调用Intent.putExtra(String, Serializable)方法将其包含在intent中。我考虑过自己做类似的问题,但是选择将数据放在一个包中,因为我的类型只有两个字段而且不值得努力。

假设您在Foo上实现了Serializable

,这就是它的工作原理
Foo test = new Foo();
test.Name = "name";
test.Value = "value";

Intent intent = new Intent();
intent.putExtra("test", test);

答案 1 :(得分:1)

如果您想在单个流程中传递对象,您可以实现自己的Application来维护全局状态:

  

需要的人的基础课程   维护全球申请状态。您   可以提供您自己的实现   在你的中指定它的名字   AndroidManifest.xml中的   标记,这将导致该类   在进程时为您实例化   对于您的应用程序/包是   创建

答案 2 :(得分:0)

当您说本地时,这是否意味着在属于同一个APK的活动/本地服务中发送用户定义的类型?只要用户定义的类型是parcelable,它就可以作为intent的附加内容发送,并且可以在service / activity的onStartCommand()中处理。