Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

2019-06-27:谈谈你是如何优化App启动过程的? #85

Open
Moosphan opened this issue Jun 27, 2019 · 9 comments
Open

2019-06-27:谈谈你是如何优化App启动过程的? #85

Moosphan opened this issue Jun 27, 2019 · 9 comments

Comments

@Moosphan
Copy link
Owner

No description provided.

@TmRobust
Copy link

IntentService
JobIntentService

@liupengfei666
Copy link

怎么没人回答,我简单说几个思路抛砖引玉

  1. 尽量不要在Application里做耗时操作,能放子线程的放子线程,能延后初始化的延后
  2. 启动页可以做成一个view在主页面加载,同时主页面的一些操作可以在这个过程中开始初始化
  3. 启动页的view层级尽量简单

@18361237136
Copy link

1.在Application里面不要做太多耗时操作

@Qiang11
Copy link

Qiang11 commented Aug 7, 2019

可以设置启动时背景透明

<style name="SplashTheme" parent="Theme.AppCompat.Light.DarkActionBar"> true true </style>

@yocn
Copy link

yocn commented Dec 1, 2019

1、数据准备。如果有首页必须准备好的数据,可以分步骤加载,先加载紧急的数据
2、区分三方库是否可以在子线程初始化,是否必须放在Application中初始化,可以的话先放子线程,或Activity中延迟加载。
3、UI方面,非必要UI的初始化放到其他的时机
4、可以使用IdleHandler 做延迟加载

@manondidi
Copy link

1.把application oncreate 中要执行的方法 分为同步和异步,尽量去延迟执行 或者使用空闲线程
去初始化一些方法
2.配置一个启动背景,避免白屏或者黑屏,然后做一个空的Activity这个Activity只做一件事,就是跳转到真的Activity,因为 启动速度 和application oncreate的耗时和第一个Activity的绘制有关,
上面都是easy的做法

  1. 利用 redex 工具 优化 dex , 因为 class字节码 分布在不同的dex中,所以启动的时候必须逐个查找一些文件,他们散列分布在不同的dex中,查找起来耗时又不方便,利用redex 把相关的class 放在同一个dex包下,避免 同一个dex包被多次查找

4.在attachedbaseContext中 新起一个进程 去加载 mutildex 可以加速App启动页的打开(可能在启动页中会等待,但是加速了从launcher到启动页的速度)

@mlinqirong
Copy link

不要在application里面执行耗时操作 不要在启动的activity里面做耗时操作
启动的View最好简单点

@unicornXx
Copy link

1.把application oncreate 中要执行的方法 分为同步和异步,尽量去延迟执行 或者使用空闲线程 去初始化一些方法 2.配置一个启动背景,避免白屏或者黑屏,然后做一个空的Activity这个Activity只做一件事,就是跳转到真的Activity,因为 启动速度 和application oncreate的耗时和第一个Activity的绘制有关, 上面都是easy的做法

  1. 利用 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该绘制多久还是多久,这样我理解根本没用啊?求解

@luckilyyg
Copy link

luckilyyg commented Feb 4, 2022 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

10 participants