所谓读写操作(也叫IO操作):通过将外部存储的文件,读取到内存(RAM)中进行修改处理,或是将内存中的数据写入文件存储到外部存储(ROM或者SD卡);
由于硬件的限制,相比于内存数据,磁盘数据的读写明显要慢得多,可能会让平时时间很短的操作被放大几十倍,特别是Rom跟SD对于I/O需要频繁操作的,关于读写的性能要特别注意,除了已知的文件读写之外,SharePreferences与数据库的相关操作本质上也是文件读写,同样需要注意,关于读写操作的性能问题,可能有以下几个方面进行优化。
一、避免主线程读写
由于读写操作时间长,如果在UI线程执行,会堵塞UI,甚至可能导致ANR,因此 I/O 操作要在子线程中进行(包括SharedPreference与SQLite本质上也是文件读写)。
SharedPreference初始化是在主线程的,因此要提前初始化。
使用SharedPreference的apply替代commit方法,apply是异步操作,commit是同步操作。
二、减少冗余读/写
冗余读写指同一个文件在应用运行期间被多次读取或者写入,这会消耗不必要的时间;可从以下几个方面进行优化:
- 缓存