当前位置: 首页 > 编程笔记 >

Android App应用启动分析与优化

黄泰宁
2023-03-14
本文向大家介绍Android App应用启动分析与优化,包括了Android 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

 <application
    android:name=".App"
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true">
    <activity android:name=".MainActivity"
     android:theme="@style/AppTheme">
      <intent-filter>
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />
      </intent-filter>
    </activity>

  //......

</application> 

解决后示例:

 

3.)常见的Theme主题 

android:theme="@android:style/Theme.Dialog" //Activity显示为对话框模式

android:theme="@android:style/Theme.NoTitleBar" //不显示应用程序标题栏

android:theme="@android:style/Theme.NoTitleBar.Fullscreen" //不显示应用程序标题栏,并全屏

android:theme="Theme.Light " //背景为白色

android:theme="Theme.Light.NoTitleBar" //白色背景并无标题栏

android:theme="Theme.Light.NoTitleBar.Fullscreen" //白色背景,无标题栏,全屏

android:theme="Theme.Black" //背景黑色

android:theme="Theme.Black.NoTitleBar" //黑色背景并无标题栏

android:theme="Theme.Black.NoTitleBar.Fullscreen" //黑色背景,无标题栏,全屏

android:theme="Theme.Wallpaper" //用系统桌面为应用程序背景

android:theme="Theme.Wallpaper.NoTitleBar" //用系统桌面为应用程序背景,且无标题栏

android:theme="Theme.Wallpaper.NoTitleBar.Fullscreen" //用系统桌面为应用程序背景,无标题栏,全屏

android:theme="Theme.Translucent" //透明背景

android:theme="Theme.Translucent.NoTitleBar" //透明背景并无标题

android:theme="Theme.Translucent.NoTitleBar.Fullscreen" //透明背景并无标题,全屏

android:theme="Theme.Panel " //面板风格显示

android:theme="Theme.Light.Panel" //平板风格显示
干我们这行,啥时候懈怠,就意味着长进的停止,长进的停止就意味着被淘汰,只能往前冲,直到凤凰涅槃的一天!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。

 类似资料:
  • 概述 使用启动来源分析功能,需要集成“应用分析(无埋点)”类型的SDK。 启动来源分析是MTJ新推出的功能,帮助用户分析App的启动来源:自然打开、应用跳转、推送唤醒等场景。 具体的产品功能,可以查看启动来源分析。 版本支持 支持系统iOS 9.0+。 集成步骤 下载并集成MTJ最新版的“应用分析(无埋点)”类型的SDK,您可以前往SDK中心下载对应的版本,并按照本文档的集成步骤进行集成。 当您完

  • 概述 APP启动来源分析功能,是百度移动统计新推出的统计功能,可以统计APP的主要激活来源分布:用户主动打开,其它APP唤醒打开,点击Push推送的通知栏消息唤醒打开APP。 用户主动打开 - 用户在桌面上点击进入应用; 其它APP唤醒 - 用户通过其它APP(eg: 小米应用助手)唤醒打开APP Push推送唤醒 - 用户通过点击推送的消息唤醒打开APP 启动来源分析功能仅支持无埋点SDK,请集

  • 在围绕用户增长(AARRR)的功能框架中,渠道分析解决了用户激活的分析,而对于活跃用户为什么活跃?用户被激活(启动)的入口或原因有哪些?行业内之前尚无成熟的工具分析此类问题。 百度移动统计通过技术创新,依赖“黑科技”实现了对应用启动来源的监控,将启动来源分为三类:直接打开、PUSH唤醒、APP调起。帮助产品运营更深入的监控和分析产品的日活。 首先解释一下三种启动来源 APP调起:指由其他APP调起

  • Ruby、Rails 性能分析与优化 性能统计 性能监控的好工具 - NewRelic 简介 你不知道的 New Relic InfluxDB + Grafana 快速搭建自己的 NewRelic,分析应用运行情况 如何持续监控 Unicorn 的性能指标 性能分析 检测 Rails action 的内存开销 rails-perftest - 分析你的 Rails 应用的性能 优化 Perform

  • 再说启动流程之前我们看看一个github的项目。 cobra 它是一个是用于创建强大的现代CLI应用程序的库,也是用于生成应用程序和命令文件的程序。 简单点来说就是方便使用者更易创建命令行工具。 举个静态博客生成器hugo的例子: hugo help hugo is the main command, used to build your Hugo site. Hugo is a Fast an

  • “查询分析器”工具为查询日志提供图形表示,使你能够监控和优化查询性能,可视化查询活动统计数据,分析 SQL 语句,快速识别和解决长时间运行的查询。若要开始使用查询分析器,请在左侧窗格中选择要分析的实例,分析会立即开始。分析完成后,结果会显示出来: Navicat Monitor 每 60 秒刷新查询分析器中的指标。若要停止或开始刷新指标,请点击 或 图标。服务器数据收集在停止期间不会停止。 最新的