Skip to content

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

Open
@Moosphan

Description

No description provided.

Activity

TmRobust

TmRobust commented on Jun 27, 2019

@TmRobust

IntentService
JobIntentService

liupengfei666

liupengfei666 commented on Jun 28, 2019

@liupengfei666

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

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

18361237136 commented on Jul 2, 2019

@18361237136

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

Qiang11

Qiang11 commented on Aug 7, 2019

@Qiang11

可以设置启动时背景透明

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

yocn commented on Dec 1, 2019

@yocn

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

manondidi

manondidi commented on Jan 19, 2020

@manondidi

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

mlinqirong commented on Dec 27, 2021

@mlinqirong

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

unicornXx

unicornXx commented on Feb 4, 2022

@unicornXx

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

luckilyyg commented on Feb 4, 2022

@luckilyyg
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

      Participants

      @TmRobust@mlinqirong@yocn@manondidi@unicornXx

      Issue actions

        2019-06-27:谈谈你是如何优化App启动过程的? · Issue #85 · Moosphan/Android-Daily-Interview