鉴于app启动速度慢的问题,接到了优化速度的任务。
无非就是异步初始化,延迟初始化,懒加载三种,我先对application中的初始化代码块做异步初始化
优化后加快了300ms,使用线程池,大概代码如下
class Application{
onCreate(){
//do sth
postTask(new Runnable());
}
void postTask(Runnable task){
//向线程池添加任务
}
}
之后测试启动速度是1200ms+
但是!但是!!但是!!!我在线程池运行前加了if(1==1)return
那我就想了,都说application中不要创建线程池,这会导致性能消耗?所以我尝试使用HandlerThread和Handler的组合,然后进行post,结果依然是1200ms+
所以所以,我来求助上csdn上的大神,application中应该如何正确优化?
new Thread() {
@Override
public void run() {
Looper.prepare();
//你的耗时操作
Looper.loop();
}
}.start();
个人建议最好还是不要在Application中进行耗时操作,可以将耗时操作放到第一个Activity中,当Activity获取到值之后在缓存至Application中
个人认为你应该先分析启动过程最耗时的部分有哪些,再根据耗时的部分做优化。
另外启动也分冷启动,热启动。
intentservice 了解一下 我想你会找到你的真爱,保证能在400MS以内, 注意要控制Application的onCreate的调用次数