如何在Android中发送具有意图的自定义数据对象?
Android中的意图是在未耦合的组件之间传递消息的一种优雅方式,但若您想发送带有意图的额外数据呢?我知道您可以添加各种值类型和实现Parcelable的对象,作为附加项,但这实际上不适合在本地发送用户定义的类型(即,不通过远程接口)。有什么想法吗?当您说本地时,这是否意味着要跨属于同一APK的活动/本地服务发送用户定义的类型?只要用户定义的类型是可打包的,它就可以作为额外的目的发送,并且可以在服务/活动的onStartCommand()中进行处理。如果要在单个进程中传递对象,可以实现自己的来维护全局状态: 为那些需要 维护全局应用程序状态。你 可以通过以下方式提供您自己的实现 在文件中指定其名称 AndroidManifest.xml的 标记,这将导致该类 在流程运行时为您实例化 适用于您的应用程序/软件包: 创造如何在Android中发送具有意图的自定义数据对象?,android,Android,Android中的意图是在未耦合的组件之间传递消息的一种优雅方式,但若您想发送带有意图的额外数据呢?我知道您可以添加各种值类型和实现Parcelable的对象,作为附加项,但这实际上不适合在本地发送用户定义的类型(即,不通过远程接口)。有什么想法吗?当您说本地时,这是否意味着要跨属于同一APK的活动/本地服务发送用户定义的类型?只要用户定义的类型是可打包的,它就可以作为额外的目的发送,并且可以在服务/活动的onStartCommand()中进行处理。如果要在单个进程中传递对象,可以实现自己的来维
在您的类型中,您可以实现
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);
本地,而不是通过aidl,并且都在同一流程中,使用同一应用程序。问题是,为复杂的自定义数据类型实现parcelable实际上是相当痛苦的,当我需要做的只是有目的地传输一个对象时……好吧,那么使用应用程序作为共享数据的代理/存储?确切地说,如果需要,您可以将其实现为存储库