一、Android中尽量不要采用静态变量存储关键数据
原因:Android APP在运行后,放置在后台,一旦被回收后,再重新打开,app会恢复原有的activity,但是静态变量则会被初始化。Application也会被初始化。
建议用文件存储,或者sp,或者contentProivder。
二、关于Sharepreference
1、sp是不能跨进程同步,不能跨进程读写数据。
原因在于每个进程都会维护自己的一份sp副本。其他进程无法获取,只有在应用结束后才能够修改到文件系统中。
2、存储文件过大
主要是保存配置类文件,如果文件太大,获取值会阻塞主线程。引起UI卡顿。
解析大Sharepreference文件的时候,会产生大量的临时对象,会导致频繁GC。
key和Value值一直存在于内存当中,如果文件太大,会造成内存占用过大。
绝不能滥用
三、内存对象序列化
serializeble是java中的序列化接口,采用serializeble会产生大量的临时变量,导致大量的垃圾回收。
在Android中采用Parcelable来序列化对象。比serializeble性能更好,但是不能用于磁盘文件的序列化。主要是实现对象在进程中传递。
内存中的序列化建议采用Parcelable
磁盘文件建议采用serializeble