文章目录
  1. 1. 概述:见过很多App启动的速度都很慢(包括自己以前写的),于是想了一下:启动的时候是不是可以启动一个新的线程来加载和初始化数据呢?于是写了一个小Demo
  2. 2. APP启动流程:
    1. 2.1. 当在上述调用链中进行耗时任务时将会导致APP启动延时故尽量不要执行耗时任务
  3. 3. 开启新线程优化数据加载(初始化数据)
    1. 3.1. 加入新线程执行结果:(在MainActivity的onCreat也计时)
    2. 3.2. 不加线程直接循环的结果:

概述:见过很多App启动的速度都很慢(包括自己以前写的),于是想了一下:启动的时候是不是可以启动一个新的线程来加载和初始化数据呢?于是写了一个小Demo

APP启动流程:

Application构造函数--->attachBaseContext()--->onCreat()--->Activity生命周期

当在上述调用链中进行耗时任务时将会导致APP启动延时故尽量不要执行耗时任务

开启新线程优化数据加载(初始化数据)

加入新线程执行结果:(在MainActivity的onCreat也计时)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//Application的attachBaseContext方法:
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
Log.i("TAG", "attachBaseContext时间:=" + System.currentTimeMillis());

HandlerThread thread = new HandlerThread("compute");
thread.start();

Handler h = new Handler(thread.getLooper());
h.post(new Runnable() {
@Override
public void run() {
for (int i = 0; i < 10000000; i++) {
total += i;
}
}
});

Log.i("TAG", "attachBaseContext" + total);
}

不加线程直接循环的结果:

文章目录
  1. 1. 概述:见过很多App启动的速度都很慢(包括自己以前写的),于是想了一下:启动的时候是不是可以启动一个新的线程来加载和初始化数据呢?于是写了一个小Demo
  2. 2. APP启动流程:
    1. 2.1. 当在上述调用链中进行耗时任务时将会导致APP启动延时故尽量不要执行耗时任务
  3. 3. 开启新线程优化数据加载(初始化数据)
    1. 3.1. 加入新线程执行结果:(在MainActivity的onCreat也计时)
    2. 3.2. 不加线程直接循环的结果: