Android-Daily-Interview
Android-Daily-Interview copied to clipboard
2019-06-27:谈谈你是如何优化App启动过程的?
IntentService JobIntentService
怎么没人回答,我简单说几个思路抛砖引玉
- 尽量不要在Application里做耗时操作,能放子线程的放子线程,能延后初始化的延后
- 启动页可以做成一个view在主页面加载,同时主页面的一些操作可以在这个过程中开始初始化
- 启动页的view层级尽量简单
1.在Application里面不要做太多耗时操作
可以设置启动时背景透明
1、数据准备。如果有首页必须准备好的数据,可以分步骤加载,先加载紧急的数据 2、区分三方库是否可以在子线程初始化,是否必须放在Application中初始化,可以的话先放子线程,或Activity中延迟加载。 3、UI方面,非必要UI的初始化放到其他的时机 4、可以使用IdleHandler 做延迟加载
1.把application oncreate 中要执行的方法 分为同步和异步,尽量去延迟执行 或者使用空闲线程 去初始化一些方法 2.配置一个启动背景,避免白屏或者黑屏,然后做一个空的Activity这个Activity只做一件事,就是跳转到真的Activity,因为 启动速度 和application oncreate的耗时和第一个Activity的绘制有关, 上面都是easy的做法
- 利用 redex 工具 优化 dex , 因为 class字节码 分布在不同的dex中,所以启动的时候必须逐个查找一些文件,他们散列分布在不同的dex中,查找起来耗时又不方便,利用redex 把相关的class 放在同一个dex包下,避免 同一个dex包被多次查找
4.在attachedbaseContext中 新起一个进程 去加载 mutildex 可以加速App启动页的打开(可能在启动页中会等待,但是加速了从launcher到启动页的速度)
不要在application里面执行耗时操作 不要在启动的activity里面做耗时操作 启动的View最好简单点
1.把application oncreate 中要执行的方法 分为同步和异步,尽量去延迟执行 或者使用空闲线程 去初始化一些方法 2.配置一个启动背景,避免白屏或者黑屏,然后做一个空的Activity这个Activity只做一件事,就是跳转到真的Activity,因为 启动速度 和application oncreate的耗时和第一个Activity的绘制有关, 上面都是easy的做法
- 利用 redex 工具 优化 dex , 因为 class字节码 分布在不同的dex中,所以启动的时候必须逐个查找一些文件,他们散列分布在不同的dex中,查找起来耗时又不方便,利用redex 把相关的class 放在同一个dex包下,避免 同一个dex包被多次查找
4.在attachedbaseContext中 新起一个进程 去加载 mutildex 可以加速App启动页的打开(可能在启动页中会等待,但是加速了从launcher到启动页的速度) ===================== “做一个空的Activity这个Activity只做一件事,就是跳转到真的Activity,因为 启动速度 和application oncreate的耗时和第一个Activity的绘制” 兄dei,这里不是很理解,启动时间是指从用户点击icon到他看到/能使用APP,做一个空的Activity跳转,你第二个真正要显示的Activity该绘制多久还是多久,这样我理解根本没用啊?求解
这是来自QQ邮箱的假期自动回复邮件。