美文网首页Android开发经验谈Android开发
Android 开发高手课笔记-存储篇

Android 开发高手课笔记-存储篇

作者: 毛先森 | 来源:发表于2019-12-28 10:53 被阅读0次

    前言

    这套课程是由微信团队, Tinker 前负责人张绍文出品

    相关链接

    Java 对象序列化您不知道的 5 件事……

    ObjectOutputStream 源码

    SharePerfrence 缺点

    1. 不论 apply (异步)还是 commit (同步)都会将整个 xml 文件重写
    2. 跨进程容易出现问题,尽管开启了 sp 的多进程模式
    3. 极端情况下,App 崩溃时数据没落地,最终导致丢失

    数据序列化- Serializable

    • Serializable 原理

      Serializable 是通过 ObjectInputStream 和 ObjectOutputStream 来实现的,在序列化的过程中,使用了大量的反射和临时变量,还会递归地序列化引用的对象的类.因为大量的反射和可能频繁的 GC,所以导致性能较差

    • Serializable 的妙用

      支持修改,可用于加密数据,Java 对象序列化您不知道的 5 件事……该文中举例了,使用 writeObject 和 readObject 方法,作者将 Person 类中的年龄字段,在序列化时,将二进制数据左移 2 位,此时数据反序列化后将不可读

    • Serializable 注意事项

    1. static 变量不会序列化
    2. serialVersionUID,虽然编译器会帮我们生成,但最稳妥的方式还是显示声明
    3. Serializable 的反序列化不会走构造方法

    数据序列化- Parcelable

    由于 Java 的 Serializable 性能低下,所以 Android 提供了一套自己的序列化,它的核心实现都在Parcel.cpp

    • Parcelable 和 Serializable 区别

    Parcelable 将序列化的数据保存到内存中,不会像 Serializable 一样保存到磁盘,当然我们也可以通过Parcel.java的 marshall 接口获取 byte 数组,然后存在文件中从而实
    现 Parcelable 的永久存储

    • Parcelable 注意事项
    1. Parcelable 性能优先,实现过程复杂,但是这是因此避免了反射.
    2. 一般来说,如果需要持久化存储的话,一般还是不得不选择性能更差的 Serializable 方案

    相关文章

      网友评论

        本文标题:Android 开发高手课笔记-存储篇

        本文链接:https://www.haomeiwen.com/subject/lqfsoctx.html