前言
这套课程是由微信团队, Tinker 前负责人张绍文出品
相关链接
SharePerfrence 缺点
- 不论 apply (异步)还是 commit (同步)都会将整个 xml 文件重写
- 跨进程容易出现问题,尽管开启了 sp 的多进程模式
- 极端情况下,App 崩溃时数据没落地,最终导致丢失
数据序列化- Serializable
-
Serializable 原理
Serializable 是通过 ObjectInputStream 和 ObjectOutputStream 来实现的,在序列化的过程中,使用了大量的反射和临时变量,还会递归地序列化引用的对象的类.因为大量的反射和可能频繁的 GC,所以导致性能较差
-
Serializable 的妙用
支持修改,可用于加密数据,Java 对象序列化您不知道的 5 件事……该文中举例了,使用 writeObject 和 readObject 方法,作者将 Person 类中的年龄字段,在序列化时,将二进制数据左移 2 位,此时数据反序列化后将不可读
-
Serializable 注意事项
- static 变量不会序列化
- serialVersionUID,虽然编译器会帮我们生成,但最稳妥的方式还是显示声明
- Serializable 的反序列化不会走构造方法
数据序列化- Parcelable
由于 Java 的 Serializable 性能低下,所以 Android 提供了一套自己的序列化,它的核心实现都在Parcel.cpp
- Parcelable 和 Serializable 区别
Parcelable 将序列化的数据保存到内存中,不会像 Serializable 一样保存到磁盘,当然我们也可以通过Parcel.java的 marshall 接口获取 byte 数组,然后存在文件中从而实
现 Parcelable 的永久存储
- Parcelable 注意事项
- Parcelable 性能优先,实现过程复杂,但是这是因此避免了反射.
- 一般来说,如果需要持久化存储的话,一般还是不得不选择性能更差的 Serializable 方案
网友评论