Android Serializable 和 Parcelable 的详解以及代码示例(Kotlin)

本文比较了Serializable和Parcelable在Java对象序列化中的优劣,指出Parcelable在Android中由于高效性和内存节省常用于内存间数据传输,而Serializable适用于简单的存储和跨进程传输。同时提供了使用这两种方式的示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. Serializable和Parcelable的区别(简单记忆):

Serializable适用于简单的对象序列化,而Parcelable适用于需要更高效的对象序列化和反序列化的情况,特别是在Android开发中。

  • Serializable是Java平台的标准接口,适用于普通的对象序列化,使用Java的默认序列化机制,实现简单但性能较低。
  • Parcelable是Android平台特有的接口,适用于Android环境下的高效对象序列化,需要手动实现序列化和反序列化的逻辑,性能较高

2. 详细解释:

  • 效率
    Parcelable的效率更高,比Serializable快10倍以上。因为Parcelable是通过在内存中分配序列化数据的,而Serializable是通过类加载和反射处理的。

  • 使用场景
    Serializable方便Java中对象的序列化,可将对象存储在存储设备上。而Parcelable主要用于内存序列化,用于在Activity、Service、Receiver之间传输数据。

  • 代码侵入性
    Serializable自动序列化,不需要实现任何方法。而Parcelable需要实现writeToParcel和describeContents方法。

  • 数据存储
    Serializable会将整个对象数据存储,而Parcelable只存储对象具体内容,不存储名称等meta信息。因此Parcelable更省内存。

  • 使用难度
    Parcelable代码侵入性大,使用略复杂,需要手动实现序列化和反序列化的逻辑。Serializable使用简单,自动完成序列化,但需要处理异常。

  • 版本兼容性
    Parcelable性能高效,但在一定程度上降低了兼容性。Serializable兼容性更好,可以兼容不同Android版本。

所以一般来说,在内存之间数据传输建议使用Parcelable,跨进程存储建议使用Serializable。

3. 使用Serializable

data class MyData(val name: String, val age: Int, val sex: String) : Serializable {
   
   
    companion object {
   
   
        private const val serialVersionUID: Long = 1L
    }
}

class MainActivity : AppCompatActivity() {
   
   
    override fun onCreate(savedInstanceState: Bundle?) {
   
   
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jiet_h

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值