Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/215.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Android中发送具有意图的自定义数据对象?_Android - Fatal编程技术网

如何在Android中发送具有意图的自定义数据对象?

如何在Android中发送具有意图的自定义数据对象?,android,Android,Android中的意图是在未耦合的组件之间传递消息的一种优雅方式,但若您想发送带有意图的额外数据呢?我知道您可以添加各种值类型和实现Parcelable的对象,作为附加项,但这实际上不适合在本地发送用户定义的类型(即,不通过远程接口)。有什么想法吗?当您说本地时,这是否意味着要跨属于同一APK的活动/本地服务发送用户定义的类型?只要用户定义的类型是可打包的,它就可以作为额外的目的发送,并且可以在服务/活动的onStartCommand()中进行处理。如果要在单个进程中传递对象,可以实现自己的来维

Android中的意图是在未耦合的组件之间传递消息的一种优雅方式,但若您想发送带有意图的额外数据呢?我知道您可以添加各种值类型和实现Parcelable的对象,作为附加项,但这实际上不适合在本地发送用户定义的类型(即,不通过远程接口)。有什么想法吗?

当您说本地时,这是否意味着要跨属于同一APK的活动/本地服务发送用户定义的类型?只要用户定义的类型是可打包的,它就可以作为额外的目的发送,并且可以在服务/活动的onStartCommand()中进行处理。

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

为那些需要 维护全局应用程序状态。你 可以通过以下方式提供您自己的实现 在文件中指定其名称 AndroidManifest.xml的 标记,这将导致该类 在流程运行时为您实例化 适用于您的应用程序/软件包: 创造


在您的类型中,您可以实现
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实际上是相当痛苦的,当我需要做的只是有目的地传输一个对象时……好吧,那么使用应用程序作为共享数据的代理/存储?确切地说,如果需要,您可以将其实现为存储库