我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Android性能优化(一)App启动时间优化

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Android性能优化(一)App启动时间优化

App启动时间优化 一、首先我们需要清楚App的主题加载

你的App的主题位于

res/values/styles


我们点击

Light
主题进去,会发现此主题位于

app/build/intermediates/exploded-oar/com.android.support/appcompat-v7/25.1.0/res/values/values.xml


点击此

Light
又会跳到


我们点击后面这个

Light
进去又会跳到


在这里他定义了一个

 false 

这里有一个非常重要的选项

在他的父类


中有一个

@color/background_material_light

而这个color就是白色

在v7包中的color中定义此色

@color/material_grey_50 

所以我们可根据

windowBackground
去优化App启动的视觉感官

二、如何解决呢

1> 我们可以在原来的

AppTheme
主题下去加一行

true

这样我们在启动App时回去加载一个透明的背景,当然在用户层面看到的就是

Launcher
桌面,过一会应用才会加载出来,强行甩锅给手机系统。
我们在应用启动后需要还原主题,我们需要在系统主Activity中去加载最开始的主题。
可以在主
Activity
onCreat
方法中去

setTheme(R.style.AppTheme)

这样在应用加载出来时又恢复了正常,只是手机

System
需要背锅了

2> 如果想要彻底的优化根治app的启动时间,我们需要更加深入的了解app的启动以及一些测量app启动的方法

三、如何测启动一个App的时间

我们如和获知一个APP的启动时间呢

1> 我们在用

logcat
抓取手机app启动的日志中去搜索 “dispaly” 关键字可获取该app的启动时间
2>可以使用adb命令去启动主
Activity
去获取该app的启动时间

adb shell am start -W 包名/+全类名

比如

adb shell am start -W com.lqr.wechat/com.lqr.wechat.activity.SplashActivity

在控制台打印出日志中的

ThisTime
就是启动时间

四、Launcher启动App的过程

Launcher
上点击某个app的图标会直接调用到
am
startActivity
方法,该方法会将app分为
方法区
堆区
java栈
三个部分
在这里插入图片描述
ActivityThread
attach
方法会开启app,
Application
再开启
activity
,在调用
attach
后会调用
attach Application
远端进程调用
handleBindApplication
去创建App,调用
Application
onCreat
方法也就是
ActivityThread
中的
mInstrumenttation.callApplicationOnCreat(app)
去启动

五、找到最耗时的方法

通过检查trace的方法在主线程中找到最耗时的方法看能否放在子线程中,放在子线程中的方法要复合以下几个特征:
1、没有创建handler
2、没有绘制UI
3、异步要求不是很高

除此以外如果是单例模式的话可以尝试用懒汉模式创建,这样在使用该对象的时候再去创建,节省资源

如果是对启动页要求不是很大的情况下可以加入

true

意思为设置禁止启动项


作者:Easyhood


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Android性能优化(一)App启动时间优化

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

下载Word文档

猜你喜欢

Android性能优化(一)App启动时间优化

App启动时间优化 一、首先我们需要清楚App的主题加载 你的App的主题位于 res/values/styles我们点击Light主题进去,会发现此主题位于 app/build/intermediates/exploded-oar/com
2022-06-06

Android性能优化(一)启动优化

以前做手机的时候,我非常重视app的性能优化。其实一直以来,在工作中我总会去强调性能优化的重要性。但是,很多时候,由于一些外界因素,我们对app的一些性能指标不会那么重视。但是,性能优化依然是做好一个产品的重中之重。试想一下,如果用户费了很
2022-06-06

抖音 Android 性能优化系列:启动优化实践

本篇我们将按照主线程直接优化、后台线程间接优化、全局优化的逻辑,介绍团队在启动优化的实践中遇到的一些比较典型的案例,其间对于业界一些比较优秀的方案也会进行简要介绍。

iOS App 启动优化

作为程序猿来说,“性能优化”是我们都很熟悉的词,也是我们需要不断努以及持续进的事情,本文将会以iOS App的启动优化为展开点进探讨。

Android架构师之路之App启动性能速度优化

随着项目不断的快速迭代,往往会造成App启动卡慢现象,因为可能在App主进程启动阶段或者在主界面启动阶段放了很多初始化其他业务的逻辑,而这些业务落地可能一开始并不需要用到。

Android App应用启动分析与优化

app的启动方式: 1.)冷启动 当启动应用时,后台没有该应用的进程,这时系统会重新创建一个新的进程分配给该应用,这个启动方式就是冷启动。冷启动因为系统会重新创建一个新的进程分配给它,所以会先创建和初始化Application类,再创建
2022-06-06

Android启动优化

一、启动分类 Android的启动分冷启动、热启动、温启动。 1、冷启动:当启动应用时,后台没有这个应用的进程,需创建新的进程。 冷启动过程: click (点击应用图标)——>ipc——>Process.start——>ActivityT
2022-06-06

Android APP启动方式、启动流程及启动优化分析

本文章向大家介绍Android app应用启动的一些相关知识,包括app启动方式、app启动流程和app启动优化等知识! app应用启动方式 1、冷启动 当启动应用时,后台没有该应用的进程,这时系统会重新创建一个新的进程分配给该应用,这
2022-06-06

win7启动时间怎么优化

这篇“win7启动时间怎么优化”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“win7启动时间怎么优化”文章吧。win7启动时
2023-07-01

Android性能优化之网络优化

在移动互联网的快速发展环境下,手机用户日益对网络的使用或体验有着更深度的诉求,因此应用中的网络体验已经显得由此重要。

Linux启动时间的优化技巧

本篇内容主要讲解“Linux启动时间的优化技巧”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux启动时间的优化技巧”吧!一台电信设备的一次小故障或关机,即使只是几秒钟,都可能会对无数互联网
2023-06-05

Android性能优化系列篇UI优化

这篇文章主要为大家介绍了Android性能优化系列篇UI优化示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2022-11-13

如何优化Ubuntu Spark的启动时间

优化Ubuntu Spark的启动时间,实际上涉及到对Ubuntu操作系统的启动过程进行优化,因为Spark大数据处理框架,其启动时间主要受限于底层操作系统的启动速度。以下是一些优化Ubuntu启动时间的方法,这些方法同样适用于提升Spar
如何优化Ubuntu Spark的启动时间
2024-10-22

Spring Boot 3.3.0 新特性| 使用 CDS 优化启动时间

CDS、CRaC 和 GraalVM,这三种技术都有助于提高Java程序的启动速度,但它们的应用场景和优化方式有所不同。CDS 通过共享类数据来加速启动,CRaC 通过运行时优化来提升性能,而 GraalVM 则通过 AOT 编译来实现快速

编程热搜

  • Android:VolumeShaper
    VolumeShaper(支持版本改一下,minsdkversion:26,android8.0(api26)进一步学习对声音的编辑,可以让音频的声音有变化的播放 VolumeShaper.Configuration的三个参数 durati
    Android:VolumeShaper
  • Android崩溃异常捕获方法
    开发中最让人头疼的是应用突然爆炸,然后跳回到桌面。而且我们常常不知道这种状况会何时出现,在应用调试阶段还好,还可以通过调试工具的日志查看错误出现在哪里。但平时使用的时候给你闹崩溃,那你就欲哭无泪了。 那么今天主要讲一下如何去捕捉系统出现的U
    Android崩溃异常捕获方法
  • android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
    系统的设置–>电池–>使用情况中,统计的能耗的使用情况也是以power_profile.xml的value作为基础参数的1、我的手机中power_profile.xml的内容: HTC t328w代码如下:
    android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
  • Android SQLite数据库基本操作方法
    程序的最主要的功能在于对数据进行操作,通过对数据进行操作来实现某个功能。而数据库就是很重要的一个方面的,Android中内置了小巧轻便,功能却很强的一个数据库–SQLite数据库。那么就来看一下在Android程序中怎么去操作SQLite数
    Android SQLite数据库基本操作方法
  • ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
    工作的时候为了方便直接打开编辑文件,一些常用的软件或者文件我们会放在桌面,但是在ubuntu20.04下直接直接拖拽文件到桌面根本没有效果,在进入桌面后发现软件列表中的软件只能收藏到面板,无法复制到桌面使用,不知道为什么会这样,似乎并不是很
    ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
  • android获取当前手机号示例程序
    代码如下: public String getLocalNumber() { TelephonyManager tManager =
    android获取当前手机号示例程序
  • Android音视频开发(三)TextureView
    简介 TextureView与SurfaceView类似,可用于显示视频或OpenGL场景。 与SurfaceView的区别 SurfaceView不能使用变换和缩放等操作,不能叠加(Overlay)两个SurfaceView。 Textu
    Android音视频开发(三)TextureView
  • android获取屏幕高度和宽度的实现方法
    本文实例讲述了android获取屏幕高度和宽度的实现方法。分享给大家供大家参考。具体分析如下: 我们需要获取Android手机或Pad的屏幕的物理尺寸,以便于界面的设计或是其他功能的实现。下面就介绍讲一讲如何获取屏幕的物理尺寸 下面的代码即
    android获取屏幕高度和宽度的实现方法
  • Android自定义popupwindow实例代码
    先来看看效果图:一、布局
  • Android第一次实验
    一、实验原理 1.1实验目标 编程实现用户名与密码的存储与调用。 1.2实验要求 设计用户登录界面、登录成功界面、用户注册界面,用户注册时,将其用户名、密码保存到SharedPreference中,登录时输入用户名、密码,读取SharedP
    Android第一次实验

目录