首页 > 试题广场 >

通过Intent传递一些二进制数据的方法有哪些?

[单选题]
通过Intent传递一些二进制数据的方法有哪些?
A、使用Serializable接口实现序列化,这是java常用的方法
B、实现Parcelable接口,这里Andriod的部分分类比如Bitmap类就已经实现了,同时Parcelable在Android AIDL中交换数据也很常见
  • A
  • B
  • AB

Android中实现序列化有两个选择:一是实现Serializable接口(是JavaSE本身就支持的),一是实现Parcelable接口(是Android特有功能,效率比实现Serializable接口高效,可用于Intent数据传递,也可以用于进程间通信(IPC))。实现Serializable接口非常简单,声明一下就可以了,而实现Parcelable接口稍微复杂一些,但效率更高,推荐用这种方法提高性能。

注:Android中Intent传递对象有两种方法:一是Bundle.putSerializable(Key,Object),另一种是Bundle.putParcelable(Key,Object)。当然这些Object是有一定的条件的,前者是实现了Serializable接口,而后者是实现了Parcelable接口。

发表于 2016-05-18 15:31:59 回复(0)
为什么binder传递的数据是需要可序列化的?因为binder在内核实现要先做一次copy from user,其他进程访问的时候,对这个拷贝的内存做mmap。如果不是可序列化的数据,比如是a应用的一个bitmap指针,则b应用就会出现异常。要这个指针序列化,则需要实现为这个指针序列化的构造方法,例如构造一个新的bimap。
发表于 2021-08-08 23:22:58 回复(0)
出题的怎么想的,用intent传递bitmap,真牛逼
发表于 2018-05-23 21:25:41 回复(0)
Serializable本身是java特有的序列化接口。而 Parcelable是Android才有的,之所以 Android还要弄出 Parcelable而不直接用 Serializable,就是因为 Parcelable更加高效,但相比起 Serializable在写法上要复杂一些。
发表于 2017-07-08 19:30:36 回复(0)
AB都正确。需要注意的是,Parcelable的效率高于Serializable。
两者最大的区别在于存储媒介的不同。
    Serializable 使用 I/O 在硬盘上读写存储
    Parcelable 是直接 在内存中读写。
发表于 2018-04-13 15:16:58 回复(0)
Android中除了用java中常见的Serializable序列化进行数据传递,更是提供它独有的Parceable的接口传递
发表于 2017-09-17 20:08:37 回复(0)
没看见c,
发表于 2017-08-21 07:05:45 回复(0)
两种方式都可以 C
发表于 2015-07-15 15:52:53 回复(0)
C
受教了
发表于 2015-07-10 23:13:57 回复(0)
C
发表于 2015-04-05 19:46:07 回复(3)
C
发表于 2015-04-03 14:56:30 回复(0)
C
发表于 2015-03-27 15:11:46 回复(0)
C
发表于 2015-03-26 14:15:12 回复(0)
c,Serializable和Parcelable都可以
发表于 2015-03-23 15:15:03 回复(0)
C
发表于 2015-03-12 10:37:49 回复(0)
C
发表于 2015-03-08 22:26:07 回复(0)
C
两者都可以
发表于 2015-03-04 17:45:24 回复(0)
C
发表于 2015-02-25 14:33:27 回复(0)
c
发表于 2015-02-12 20:00:39 回复(0)
C
发表于 2015-02-11 22:43:59 回复(0)