前言:

昨晚新版本终于发布了,但是还是记得有测试反馈app启动好长时间也没进入app主页,所以今天准备加个班总结一下App启动那些事!

app的启动方式:

1.)冷启动

     当启动应用时,后台没有该应用的进程,这时系统会重新创建一个新的进程分配给该应用,这个启动方式就是冷启动。冷启动因为系统会重新创建一个新的进程分配给它,所以会先创建和初始化Application类,再创建和初始化MainActivity类(包括一系列的测量、布局、绘制),最后显示在界面上。

2.)热启动

     当启动应用时,后台已有该应用的进程(例:按back键、home键,应用虽然会退出,但是该应用的进程是依然会保留在后台,可进入任务列表查看),所以在已有进程的情况下,这种启动会从已有的进程中来启动应用,这个方式叫热启动。热启动因为会从已有的进程中来启动,所以热启动就不会走Application这步了,而是直接走MainActivity(包括一系列的测量、布局、绘制),所以热启动的过程只需要创建和初始化一个MainActivity就行了,而不必创建和初始化Application,因为一个应用从新进程的创建到进程的销毁,Application只会初始化一次。

app的启动流程:

通过上面的两种启动方式可以看出app启动流程为:

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

app的启动优化:

基于上面的启动流程我们尽量做到如下几点

  1. Application的创建过程中尽量少的进行耗时操作

  2. 如果用到SharePreference,尽量在异步线程中操作

  3. 减少布局的层次,并且生命周期回调的方法中尽量减少耗时的操作

app启动遇见黑屏或者白屏问题

1.)产生原因

其实显示黑屏或者白屏实属正常,这是因为还没加载到布局文件,就已经显示了window窗口背景,黑屏白屏就是window窗口背景。

示例:

2.)解决办法

通过设置设置Style

(1)设置背景图Theme

通过设置一张背景图。 当程序启动时,首先显示这张背景图,避免出现黑屏

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"><item name="android:screenOrientation">portrait</item><item name="android:windowBackground">>@mipmap/splash</item><item name="android:windowIsTranslucent">true</item><item name="android:windowNoTitle">true</item>
</style>

(2)设置透明Theme

   通过把样式设置为透明,程序启动后不会黑屏而是整个透明了,等到界面初始化完才一次性显示出来

 <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"><item name="android:windowNoTitle">true</item><item name="android:windowBackground">@android:color/transparent</item><item name="android:windowIsTranslucent">true</item><item name="android:screenOrientation">portrait</item>
</style>

两者对比:

  • Theme1 程序启动快,界面先显示背景图,然后再刷新其他界面控件。给人刷新不同步感觉。

  • Theme2 给人程序启动慢感觉,界面一次性刷出来,刷新同步。

(3)修改AndroidManifest.xml

 1 <application
 2         android:name=".App"
 3         android:allowBackup="true"
 4         android:icon="@mipmap/ic_launcher"
 5         android:label="@string/app_name"
 6         android:supportsRtl="true">
 7         <activity android:name=".MainActivity"
 8          android:theme="@style/AppTheme">
 9             <intent-filter>
10                 <action android:name="android.intent.action.MAIN" />
11
12                 <category android:name="android.intent.category.LAUNCHER" />
13             </intent-filter>
14         </activity>
15
16     //......
17
18 </application>

解决后示例:

3.)常见的Theme主题
 1 android:theme="@android:style/Theme.Dialog" //Activity显示为对话框模式
 2
 3 android:theme="@android:style/Theme.NoTitleBar" //不显示应用程序标题栏
 4
 5 android:theme="@android:style/Theme.NoTitleBar.Fullscreen" //不显示应用程序标题栏,并全屏
 6
 7 android:theme="Theme.Light " //背景为白色
 8
 9 android:theme="Theme.Light.NoTitleBar" //白色背景并无标题栏
10
11 android:theme="Theme.Light.NoTitleBar.Fullscreen" //白色背景,无标题栏,全屏
12
13 android:theme="Theme.Black" //背景黑色
14
15 android:theme="Theme.Black.NoTitleBar" //黑色背景并无标题栏
16
17 android:theme="Theme.Black.NoTitleBar.Fullscreen" //黑色背景,无标题栏,全屏
18
19 android:theme="Theme.Wallpaper" //用系统桌面为应用程序背景
20
21 android:theme="Theme.Wallpaper.NoTitleBar" //用系统桌面为应用程序背景,且无标题栏
22
23 android:theme="Theme.Wallpaper.NoTitleBar.Fullscreen" //用系统桌面为应用程序背景,无标题栏,全屏
24
25 android:theme="Theme.Translucent" //透明背景
26
27 android:theme="Theme.Translucent.NoTitleBar" //透明背景并无标题
28
29 android:theme="Theme.Translucent.NoTitleBar.Fullscreen" //透明背景并无标题,全屏
30
31 android:theme="Theme.Panel " //面板风格显示
32
33 android:theme="Theme.Light.Panel" //平板风格显示

转载于:https://www.cnblogs.com/ganchuanpu/p/8985294.html

Android性能优化之App应用启动分析与优化相关推荐

  1. Android App应用启动分析与优化

    前言: 昨晚新版本终于发布了,但是还是记得有测试反馈app启动好长时间也没进入app主页,所以今天准备加个班总结一下App启动那些事! app的启动方式: 1.)冷启动 当启动应用时,后台没有该应用的 ...

  2. 【转载】Android App应用启动分析与优化

    前言: 昨晚新版本终于发布了,但是还是记得有测试反馈app启动好长时间也没进入app主页,所以今天准备加个班总结一下App启动那些事! app的启动方式: 1.)冷启动  当启动应用时,后台没有该应用 ...

  3. 京东怎么做《IOS系统APP耗电量检测分析和优化》?

    耗电量不仅是衡量应用性能表现的一个重要指标,同时也是用户体验的重要组成部分.要做好⼀款APP,不仅仅是实现功能那么简单,我们需要考虑很多性能指标,让用户用的更爽.在开发过程中,要充分考虑到各项性能指标 ...

  4. app耗电检测分析以及优化

    耗电量不仅是衡量应用性能表现的一个重要指标,同时也是用户体验的重要组成部分.要做好⼀款APP,不仅仅是实现功能那么简单,我们需要考虑很多性能指标,让用户用的更爽.在开发过程中,要充分考虑到各项性能指标 ...

  5. Android 系统(42)---使用BatteryHistorian分析和优化应用电量

    使用BatteryHistorian分析和优化应用电量 在Android项目中, 较难监控应用的电量消耗, 但是用户却非常关心手机的待机时间. 过度耗电的应用, 会遭到用户无情的卸载, 不要存在侥幸心 ...

  6. Android跳过手机App的启动广告之李跳跳使用指南

    前言 今天给大家介绍一款 免费.超强大.超好用.超简洁.超安全(都不知道怎么夸它了) 的跳广告软件. 该软件开发者是大小姐李跳跳,软件功能原理可以在公众号中了解详情(原理就是利用Android的无障碍 ...

  7. Android群英传笔记——第十章:Android性能优化

    Android群英传笔记--第十章:Android性能优化 随着Android应用增多,功能越来越复杂,布局也越来越丰富了,而这些也成为了阻碍一个应用流畅运行,因此,对复杂的功能进行性能优化是创造高质 ...

  8. UE3 性能、分析及优化

    性能.分析及优化 概述 通用维护 基础工具和技术 内存分析 内容分析和优化 CPU 性能 游戏线程性能 渲染线程性能 GPU 性能 网络分析 移动设备分析 概述 使游戏可以正常运行的同时符合内存约束条 ...

  9. 1个小时接入友盟+ U-APM:解决移动应用崩溃、性能、内存的云监控分析

    目录 背景和痛点 需求分析 维度分析 技术实现 1.注册友盟+会员 2.新建应用 3.集成U-APM的SDK 4.配置必要的权限清单 5.初始化接入 6.集成平台 功能简介: 分析 云真机测试 总结和 ...

最新文章

  1. Python实现信息自动配对爬虫排版程序
  2. 发觉好像视力户籍变差么。。
  3. mysql的慢查询日志功能_MySQL 慢查询日志
  4. 小牛想要进大厂,距离拿百万高薪,进入AI行业你还缺哪些?
  5. 目标检测特殊层:PSROIPooling详解
  6. 频遭黑客攻击的物联网,这里有妙招!
  7. Python+OpenCV:模板匹配(Template Matching)
  8. ABAP--动态创建类型和变量的使用程序样例
  9. 在Redis集群技术上,你不可错过的四大集成者
  10. python控制鼠标_Python直接控制鼠标键盘模块 pyautogui
  11. 三分钟将PR电影级调色滤镜应用到Unity中__Unity_PPS使用笔记
  12. 思科网络模拟器7.3.1版本的下载和安装
  13. ros机器人开发概述
  14. 每日词根——vad(走)
  15. Communications link failure错误(亲测有效)
  16. 2020.7.25多态、抽象
  17. 记录一下解决win10无法分屏问题
  18. 戴尔笔记本重装系统后识别不出固态盘的问题的方法
  19. 电脑的windows键已被停用解决方法
  20. Typora自定义样式--你值得拥有自己的styles

热门文章

  1. mysql tomcat 自动重连_基于tomcat+mysql的c/s模式下的系统自动更新
  2. pyinstaller打包venv(虚拟环境),.pyd文件,非.py文件打包
  3. 解决 Windows10 和 Ubuntu18.04.4 双系统 时间同步不一致问题
  4. Python基础总结(4)
  5. Python基础总结(2)
  6. 人群密度估计--CNN-based Cascaded Multi-task Learning of High-level Prior and Density Estimation for Crowd
  7. 目标检测--SSD: Single Shot MultiBox Detector
  8. Linux系统时间同步:ntpdate--在内网中同步时间
  9. java图片文件字符串jsp_将图片转成base64字符串并在JSP页面显示的Java代码
  10. 数据库缓存最终一致性的四种方案