持久化保存Parcelable实践

最近突发奇想,希望持久化保存Activity的信息,做应用恢复使用,而在Activity中最基本的Intent,Bundle都是基于Parcelable的,于是就研究了下Parcelable的持久化。

查阅了很多资料,无一例外的都有这样一段话(当然都是拿来主义)

Parcelable的性能比Serializable好,在内存开销方面较小,所以在内存间数据传输时推荐使用Parcelable,如activity间传输数据,而Serializable可将数据持久化方便保存,所以在需要保存或网络传输数据时选择Serializable,因为android不同版本Parcelable可能不同,所以不推荐使用Parcelable进行数据持久化

Parcelable既然可以序列化,那么也就是Parcelable里面的数据按照一定的规则用字节流存起来了,既然如此,我们只要能够从Parcel中获取到字节流,其实也就完成了持久化Parcelable的工作了。

详细看了一下Parcel的代码,Android Studio确实方便,直接看反编译出来的文件(其实Android Studio已经对SDK的源码做了关联),Parcel中的unmarshall和marshall两个方法引起了我的注意,一个拿到字节数组,一个存入字节数组,完全就是我想要的嘛。

那么就做个demo试验一下,试验的思路如下:

  • 准备一个实现Parcelable接口的类
  • 准备DiskLruCache
  • 写方法,把需要保存的数据通过Parcel序列化保存,拿到字节数组,存DiskLruCache
  • 读方法,从DiskLruCache中读字节数组,然后放到Parcel里,在从Parcel中反序列化读出

编码
序列化的类

private static class TestParcel implements Parcelable{
   

    private String name;

    public TestParcel(String name) {
      this.name = name;
    }

    protected TestParcel(Parcel in) {
      
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值