关于提前异步加载SharePreference的一次失败尝试
来源:1-1 课前必读(不看会错过一个亿)

全是甘货
2019-03-05
实现思路是这样的:
1.由于没有MulitDex.install(),我直接在Application的onCreate里面第二句就开始初始化了。
@Override
public void onCreate() {
super.onCreate();
new Thread(() -> Pref1 = App.this.getSharedPreferences(“StringA”, Context.MODE_PRIVATE));
new Thread(() -> Pref2 = App.this.getSharedPreferences(“StringB”, Context.MODE_MULTI_PROCESS));
}
并且提供了两个get方法(getPref2就不贴了)
public SharedPreferences getPref1() {
return Pref1;
}
然后在本来初始化SharedPreferences的地方,作出了以下改动
ClassA{
// 我把这句注释了
SharedPreferences pref1 = context.getSharedPreferences(“StringA”, Context.MODE_PRIVATE);
// 更换成了
SharedPreferences pref1 = ((App)getApplication).getPref1();
//getPref2() 也是同样道理,就不贴了。
}
但我的启动时间不减反增,
时间变化基本是:
ThisTime: +20
TotalTime: +20
WaitTime: +10
我怀疑是不是这个ClassA本来就不是在冷启动时候初始化的,所以我这样的改变,反而让冷启动增加了初始化的任务。
请老师指导一下,感谢!
写回答
1回答
-
同学你好,出现这个情况是有可能的,需要根据具体的case具体分析。比如你这个ClassA是什么时候用的,如果说启动阶段没有使用Sp的话那你加进去肯定是有浪费的。还有:可以把Sp的初始化再提前些,到attachBaseContext里。
132019-03-05
相似问题