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