android启动优化解读

28 篇文章 0 订阅
17 篇文章 0 订阅

性能优化包括很多方面,比如:启动优化、布局优化、内存优化、卡顿优化、网络优化、数据库优化、内存泄漏优化、包体积优化等等。我们想要进行性能优化就要了解基本的原理,这篇文章针对启动这一方面来谈一谈相关的原理知识。

一、冷启动、温启动、热启动

首先了解下启动的这三个概念,也是最常见的:

1、冷启动。

冷启动指的是该应用程序在此之前没有被创建,发生在应用程序首次启动或者自上次被终止后的再次启动。简单的说就是app进程还没有,需要创建app的进程并启动app。

比如开机后,点击屏幕的app图标启动应用。

冷启动的过程主要分为两步:

1)系统任务。加载并启动应用程序;显示应用程序的空白启动窗口;创建APP进程

2)APP进程任务。启动主线程;创建Activity;加载布局;屏幕布局;绘制屏幕

其实这不就是APP的启动流程嘛?所以冷启动是会完整走完一个启动流程的,从系统到进程。

2、温启动。

温启动指的是App进程存在,但Activity可能因为内存不足被回收,这时候启动App不需要重新创建进程,只需要执行APP进程中的一些任务,比如创建Activity。

比如返回Home后,又继续使用其他的APP,时间久了或者打开的应用多了,之前应用的Activity有可能被回收了,但是进程还在。

所以温启动过程相当于执行了冷启动的第二过程,也就是APP进程任务,需要重新启动线程,Activity等。

3、热启动。

热启动就是指App进程存在,并且Activity对象仍然存在内存中没有被回收。

比如app被切到后台,再次启动app的过程。

所以热启动的开销最少,这个过程只会把Activity从后台展示到前台,无需初始化,布局绘制等工作。

二、了解到APP的基本概念,那么我们如何检测分析出启动中出现的问题呢?

友盟+U-apm性能检测工具

接入友盟U-APM后即可拥有实时、可靠、全面的应用崩溃、ANR、自定义异常等捕获能力, 以及卡顿检测、启动分析、内存分析、网络分析等性能监测能力,支持多方面智能告警监测。u-apm启动分析功能包含启动耗时、慢启动情况、启动崩溃数据。帮助开发者把控启动状态。

三、APP启动环节有哪些可优化的点

三种启动方式中,冷启动经历的时间最长,也是走完了最完整的启动流程,所以我们再次分析下冷启动的启动流程,看看有哪些可以优化的点:

Launcher startActivity

AMS startActivity

Zygote fork 进程

ActivityThread main()

ActivityThread attach

handleBindApplication

attachBaseContext

Application attach

installContentProviders

Application onCreate

Looper.loop

Activity onCreate,onResume

纵观整个流程,其实我们能动的地方不多,无非就是Application的attach,onCreate方法,Activity的onCreate,onResume方法,这些方法也就是我们的优化点。

最后再和大家回顾下今天说到的启动优化方案:

消除启动时的白屏/黑屏。windowBackground。

第三方库懒加载/异步加载。线程池,启动器。

预创建Activity。对象预创建。

预加载数据。

Multidex预加载优化。5.0以下多dex情况。

Webview启动优化。预创建,缓存池,静态资源。

避免布局嵌套。多层嵌套。

为了方便记忆,我再整理成以下三类,分别是Application、Activity、UI:

Application 三方库,Multidex。

Activity 预创建类,预加载数据。

UI方面 windowBackground,布局嵌套,webview。

综上所述,要进行启动性能优化,就要对启动相关原理知识有所了解,之后借助友盟u-apm应用性能检测工具,帮助我们开发者进行启动方面的分析检测,再制定出针对性的优化方案,使APP质量更上一层楼。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值