广告
返回顶部
首页 > 资讯 > 移动开发 >Android优化应用启动速度
  • 930
分享到

Android优化应用启动速度

启动Android 2022-06-06 09:06:45 930人浏览 独家记忆
摘要

一、应用的启动 启动方式 通常来说,在安卓中应用的启动方式分为两种:冷启动和热启动。 1、冷启动:当启动应用时,后台没有该应用的进程,这时系统会重新创建一个新的进程分配给该

一、应用的启动

启动方式

通常来说,在安卓中应用的启动方式分为两种:冷启动和热启动。

1、冷启动:当启动应用时,后台没有该应用的进程,这时系统会重新创建一个新的进程分配给该应用,这个启动方式就是冷启动。 2、热启动:当启动应用时,后台已有该应用的进程(例:按back键、home键,应用虽然会退出,但是该应用的进程是依然会保留在后台,可进入任务列表查看),所以在已有进程的情况下,这种启动会从已有的进程中来启动应用,这个方式叫热启动。

特点

1、冷启动:冷启动因为系统会重新创建一个新的进程分配给它,所以会先创建和初始化Application类,再创建和初始化MainActivity类(包括一系列的测量、布局、绘制),最后显示在界面上。

2、热启动:热启动因为会从已有的进程中来启动,所以热启动就不会走Application这步了,而是直接走MainActivity(包括一系列的测量、布局、绘制),所以热启动的过程只需要创建和初始化一个MainActivity就行了,而不必创建和初始化Application,因为一个应用从新进程的创建到进程的销毁,Application只会初始化一次。

上面说的启动是点击app的启动图标来启动的,而另外一种方式是进入最近使用的列表界面来启动应用,这种不应该叫启动,应该叫恢复。

二、应用启动的流程

在安卓系统上,应用在没有进程的情况下,应用的启动都是这样一个流程:当点击app的启动图标时,安卓系统会从ZyGote进程中fork创建出一个新的进程分配给该应用,之后会依次创建和初始化Application类、创建MainActivity类、加载主题样式Theme中的windowBackground等属性设置给MainActivity以及配置Activity层级上的一些属性、再inflate布局、当onCreate/onStart/onResume方法都走完了后最后才进行contentView的measure/layout/draw显示在界面上,所以直到这里,应用的第一次启动才算完成,这时候我们看到的界面也就是所说的第一帧。

所以,总结一下,应用的启动流程如下:

Application的构造器方法——>attachBaseContext()——>onCreate()——>Activity的构造方法——>onCreate()——>配置主题中背景等属性——>onStart()——>onResume()——>测量布局绘制显示在界面上。

三、测量应用启动的时间

在上面这个启动流程中,任何一个地方有耗时操作都会拖慢我们应用的启动速度,而应用启动时间是用毫秒度量的,对于毫秒级别的快慢度量我们还是需要去精确的测量到到底应用启动花了多少时间,而根据这个时间来做衡量。

什么才是应用的启动时间

从点击应用的启动图标开始创建出一个新的进程直到我们看到了界面的第一帧,这段时间就是应用的启动时间。

我们要测量的也就是这段时间,测量这段时间可以通过adb shell命令的方式进行测量,这种方法测量的最为精确,命令为:


adb shell am start -W [packageName]/[packageName.MainActivity]

执行成功后将返回三个测量到的时间:
1、ThisTime:一般和TotalTime时间一样,除非在应用启动时开了一个透明的Activity预先处理一些事再显示出主Activity,这样将比TotalTime小。
2、TotalTime:应用的启动时间,包括创建进程+Application初始化+Activity初始化到界面显示。
3、WaitTime:一般比TotalTime大点,包括系统影响的耗时。

下面是测量一个应用冷启动和热启动的时间:
冷启动:

热启动:

可以看到在进程已经存在的情况下,只需要重新初始化MainActivity,这样的启动比较快,不过大多数情况下应用的启动都是冷启动,因为用户都会在任务列表中手动关闭遗留的应用进程。

四、减少应用启动时的耗时

针对冷启动时候的一些耗时,如上测得这个应用算是中型的app,在冷启动的时候耗时已经快700ms了,如果项目再大点在Application中配置了更多的初始化操作,这样将可能达到1s,这样每次启动都明显感觉延迟,所以在进行应用初始化的时候采取以下策略:

1、在Application的构造器方法、attachBaseContext()、onCreate()方法中不要进行耗时操作的初始化,一些数据预取放在异步线程中,可以采取Callable实现。 2、对于sp的初始化,因为sp的特性在初始化时候会对数据全部读出来存在内存中,所以这个初始化放在主线程中不合适,反而会延迟应用的启动速度,对于这个还是需要放在异步线程中处理。 3、对于MainActivity,由于在获取到第一帧前,需要对contentView进行测量布局绘制操作,尽量减少布局的层次,考虑StubView的延迟加载策略,当然在onCreate、onStart、onResume方法中避免做耗时操作。

遵循上面三种策略可明显提高app启动速度。

优化应用启动时的体验

对于应用的启动时间,只能是尽量的避免一些耗时的、非必要的操作在主线程中,这样相对可以缩减一部分启动的耗时,另外一方面在等待第一帧显示的时间里,可以加入一些配置以增加体验,比如加入Activity的background,这个背景会在显示第一帧前提前显示在界面上。
1、先为主界面单独写一个主题style,设置一张待显示的图片,这里我设置了一个颜色,然后在manifest中设置给MainActivity:


<style name="AppTheme.Launcher">
 <item name="Android:windowBackground">@drawable/bule</item>
</style>
//...
  <activity
   android:name=".MainActivity"
   android:label="@string/app_name"
   android:theme="@style/AppTheme.Launcher">
   <intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
   </intent-filter>
  </activity>

2、然后在MainActivity中加载布局前把AppTheme重新设置给MainActivity:


@Override
 protected void onCreate(Bundle savedInstanceState) {
  setTheme(R.style.AppTheme);
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
} 

这样在启动时会先显示background,然后待界面绘制完成再显示主界面:

您可能感兴趣的文章:Android优化之启动页去黑屏实现秒启动Android APP启动方式、启动流程及启动优化分析浅谈android性能优化之启动过程(冷启动和热启动)Android App应用启动分析与优化Android应用启动速度优化Android 开发延时调用的几种方法Android延时操作的三种方法Android中实现延时执行操作的方法小结Android启动优化之延时加载的步骤详解


--结束END--

本文标题: Android优化应用启动速度

本文链接: https://www.lsjlt.com/news/25836.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Android优化应用启动速度
    一、应用的启动 启动方式 通常来说,在安卓中应用的启动方式分为两种:冷启动和热启动。 1、冷启动:当启动应用时,后台没有该应用的进程,这时系统会重新创建一个新的进程分配给该...
    99+
    2022-06-06
    启动 Android
  • Android应用启动速度优化
    开发Android应用中,随着功能越来越多,启动速度越来越慢。有没有办法让自己应用启动速度快一点呢? 方法是人想出来的。先说说我的实现方法: 1 将onCreate 中初始化的...
    99+
    2022-06-06
    启动 优化 Android
  • Android如何优化启动速度
    这篇文章给大家分享的是有关Android如何优化启动速度的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。启动方式应用有三种启动状态,每种状态都会影响应用向用户显示所需的时间:冷启动、温启动与热启动冷启动(启动优化目...
    99+
    2023-06-25
  • Android 分析实现性能优化之启动速度优化
    目录启动方式冷启动(启动优化目标)热启动温启动启动流程中可优化的环节检测工具启动时间检测Logcat Displayedadb 命令统计CPU profileAPI level &g...
    99+
    2022-11-12
  • Android优化提升应用启动速度及Splash页面的设计
    目录1.启动分为两种方式2.如何测量一个应用的启动时间3.应用启动的流程4.减少应用的启动时间的耗时5.如何设计延迟加载DelayLoad1.启动分为两种方式 1) 冷启动...
    99+
    2022-11-12
  • win7启动速度怎么优化
    这篇文章主要介绍“win7启动速度怎么优化”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“win7启动速度怎么优化”文章能帮助大家解决问题。win7启动速度优化教程首先打开运行,输入“msconfig...
    99+
    2023-07-01
  • 优化SpringBoot程序启动速度
    Spring Boot 程序优化 一、延迟初始化Bean 一般在 SpringBoot 中都拥有很多的耗时任务,比如数据库建立连接、初始线程池的创建等等,我们可以延迟这些操作的初始化,来达到优化启动速度的目的。Spring Boot ...
    99+
    2023-08-17
    spring boot spring java
  • Android优化提升应用启动速度及Splash页面的设计方法
    这篇文章主要介绍“Android优化提升应用启动速度及Splash页面的设计方法”,在日常操作中,相信很多人在Android优化提升应用启动速度及Splash页面的设计方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对...
    99+
    2023-06-22
  • win10系统启动速度如何优化
    要优化Win10系统的启动速度,你可以尝试以下几个方法: 清理开机启动项:打开任务管理器(按Ctrl+Shift+Esc),切换...
    99+
    2023-10-20
    win10
  • Android启动优化
    一、启动分类 Android的启动分冷启动、热启动、温启动。 1、冷启动:当启动应用时,后台没有这个应用的进程,需创建新的进程。 冷启动过程: ...
    99+
    2022-06-06
    优化 Android
  • 优化SpringBoot程序启动速度的实现
    目录一、延迟初始化Bean二、创建扫描索引三、升级SpringBoot新版本Spring Boot 程序优化 一、延迟初始化Bean 一般在 SpringBoot 中都拥有很多的耗时...
    99+
    2023-01-15
    优化SpringBoot程序启动速度 SpringBoot优化启动速度
  • Android App应用启动分析与优化
    app的启动方式:  1.)冷启动  当启动应用时,后台没有该应用的进程,这时系统会重新创建一个新的进程分配给该应用,这个启动方式就是冷启动。冷启动因为系统...
    99+
    2022-06-06
    启动 优化 app Android
  • Android启动页优化之实现应用秒开
    Android 应用冷启动时,需要从Application开始启动,加载时间就会比较长,这段时间里,用户所能看到的就是”白屏“(这是因为默认的AppTheme的 android:wi...
    99+
    2022-11-12
  • Android性能优化(一)启动优化
            以前做手机的时候,我非常重视app的性能优化。其实一直以来,在工作中我总会去强调性能优化的重要性。但是,很多时候,由于一些外界因素,我们对app的一些性能指标不...
    99+
    2022-06-06
    启动 优化 Android
  • SpringBoot优化后启动速度快到飞起技巧示例
    目录引言启动时间分析启动优化减少业务初始化延迟初始化Spring Context Indexer关闭JMX关闭分层编译另外的思路JAR IndexAPPCDSHeap Archive...
    99+
    2022-11-13
  • 详解Android性能优化之启动优化
    目录1、为什么要进行启动优化2、启动的分类2.1 冷启动2.2 热启动2.3 温启动3、优化方向4、启动时间的测量方式4.1 使用adb 命令方式(线下使用方便)4.2 手动打点方式...
    99+
    2022-11-12
  • Win10加快桌面应用的启动速度取消启动延迟
      自从Windows Vista开始,微软就通过延迟应用加载的方式来加快开机速度,这个特性被称作“启动延迟”。而在Win10技术预览版中,当操作系统启动之后,它将会拖延“启动&rdq...
    99+
    2023-06-08
    Win10 桌面应用 启动速度 启动 延迟 速度 桌面
  • Win8开机启动项怎么设置如何优化启动项提升开机速度
    Win8系统在系统服务以及启动项方面进行了较大的优化与调整,因此不少新安装Win8系统的朋友会发现,Win8的开机速度要比Win7更快一些。不过随着用户安装的软件逐渐增多,并且目前很多软件都具备流氓性质,安...
    99+
    2022-06-04
    启动项 速度
  • Android APP启动方式、启动流程及启动优化分析
    本文章向大家介绍Android app应用启动的一些相关知识,包括app启动方式、app启动流程和app启动优化等知识!  app应用启动方式 1、冷启动  ...
    99+
    2022-06-06
    app启动 优化 app Android
  • Android性能优化(一)App启动时间优化
    App启动时间优化 一、首先我们需要清楚App的主题加载 你的App的主题位于 res/values/styles 我们点击Light主题进...
    99+
    2022-06-06
    app启动 优化 app Android
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作