【安卓-SharedPreferences】为什么“第一次从sp中获取值的时候,有可能阻塞主线程”?(理论)

【场景】

在主线程第一次读值,并且文件比较大的时候

 

【原理】

【安卓-SharedPreferences】为什么“第一次从sp中获取值的时候,有可能阻塞主线程”?(理论)

第一次读的时候,主线程会挂起,等到整个文件load完毕,才被唤醒

 

【安卓-SharedPreferences】为什么“第一次从sp中获取值的时候,有可能阻塞主线程”?(理论)

整个文件load的实现:开个线程,从磁盘中解析xml到内存,如果文件比较大那么这个会耗时,那么主线程就会卡比较久

 

【微观代码】

SharedPreferences sp = getSharedPreferences("test", MODE_PRIVATE);

这句代码意思:开个线程,从磁盘中解析xml到内存

tring testValue = sp.getString("testKey", null);

这句代码意思:如果load完毕了就不会阻塞,没有load完毕就会阻塞