【Android性能优化】 应用启动优化

 这篇文字其实没什么内容,就是介绍了一下冷启动跟热启动以及白屏。

 启动流程

应用启动流程是指从启动到显示主界面这一段,全流程在下面的热启动介绍。

应用启动分为热启动冷启动冷启动就是就是应用之前没有被点开过,或者点开之后又在最近任务中删除,不会在最近任务中;热启动就是应用被点开过了,在最近任务中能看到它。

冷启动就是要走应用启动的全流程,创建应用程序进程-->创建和初始化Application-->创建和初始化MainActivity-->MainActivity中View的measure、layout、draw。

热启动已经有存活的Application了,只需要执行:创建和初始化MainActivity-->MainActivity中View的measure、layout、draw。

我个人对热启动、冷启动的记忆区分就是,热启动就是趁应用还没有彻底凉凉(进程彻底被杀死)的时候启动应用。

启动时间

查看启动时间命令行:

adb shell am start -W 包名/主界面含包名全路径 
例子:adb shell am start -W com.example.sim/com.example.sim.MainActivity

结果如下图:

        冷启动:

         热启动:

可见在这个程序里冷启动花费的时间比热启动多得多。

优化启动时间

 冷启动介绍里已经列举了应用启动的流程,避免在这个流程里写太多耗时操作就行,可以将一些耗时操作放到异步进程进行,降低布局的层级也可以减少View的measure、layout、draw时间。

优化体验

我们自己开发app的时候,点击桌面图标进入app时会看到白屏,用户看着白屏的体验可能不太好,可以将它设置为好看的图片。

1.图片替代白屏

1.在theme.xml文件里新建一个style。

    <style name="Theme.SIM.MainActivity"><item name="android:windowBackground">@drawable/ic_launcher_foreground</item></style>

2.Manifast中将新的style用在MainActivity上。

        <activityandroid:name=".MainActivity"android:exported="true"android:theme="@style/Theme.SIM.MainActivity"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity>

3.在MainActivity的onCreate方法恢复原来的主题,不然背景会一直是那张图片。

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

这样之后你点开app图标就会显示这张图片了。

2.设置背景为透明

将style换成下面的就行,其他步骤跟图片是一样的,不过我试了没效果,不知道是为什么。

    <style name="Theme.SIM.MainActivity"><item name="android:windowIsTranslucent">true</item></style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/300569.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

力扣(leetcode)第21题合并两个有序链表(Python)

21.合并两个有序链表 题目链接&#xff1a;21.合并两个有序链表 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1&#xff1a; 输入&#xff1a;l1 [1,2,4], l2 [1,3,4] 输出&#xff1a;[1,1,2,3,4,4] 示例 2&a…

B+树索引和哈希索引的区别?

B树是一个平衡的多叉树&#xff0c;从根节点到每个叶子节点的高度差值不超过1&#xff0c;而且同层级的节点间有指针相互链接&#xff0c;是有序的&#xff0c;如下图&#xff1a; 哈希索引就是采用一定的哈希算法&#xff0c;把键值换算成新的哈希值&#xff0c;检索时不需要类…

贪吃蛇小游戏的代码实现之知识点铺垫篇

今天给大家介绍一个很经典的小游戏&#xff0c;它和扫雷在经典小游戏这方面可以说是旗鼓相当&#xff0c;它的名字就是贪吃蛇。贪吃蛇游戏最初为单机模式&#xff0c;后续又陆续推出团战模式、赏金模式、挑战模式等多种玩法。该游戏具体玩法是&#xff1a;用游戏把子上下左右控…

xlua源码分析(四) lua访问C#的值类型

xlua源码分析&#xff08;四&#xff09; lua访问C#的值类型 上一节我们主要探讨了C#是如何使用interface和delegate访问lua层的table和function的&#xff0c;本节我们跟着Examples 05_NoGc&#xff0c;来看看xlua是如何实现lua层无gc访问C#的值类型的。 首先例子中用到的lua…

WizFi360-EVB-Pico评估版介绍

文章目录 1 概述2 硬件资源2.1 硬件规格2.2 引脚定义2.3 工作条件 3 参考资料3.1 Datasheet3.2 原理图3.3 尺寸图(单位 : mm) 3.4 参考例程 4 硬件协议栈优势 1 概述 WizFi360-EVB-Pico基于树莓派RP2040&#xff0c;并使用WizFi360增加Wi-Fi连接。它与树莓派Pico板引脚兼容&…

docker安装MySQL8.0

1、从docker仓库中拉去mysql 8.0 docker pull mysql:8.0 2、查看是否拉取成功 docker images mysql:8.0 3、安装运行mysql8.0容器 docker run --name mysql8 -v /my/mysql/config:/etc/mysql/conf.d -v /my/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD123456 -p 3306…

8+WGCNA+免疫+实验,干湿结合的经典生信思路,可冲

今天给同学们分享一篇生信文章“Identifying the key genes of Epstein-Barr virus-regulated tumour immune microenvironment of gastric carcinomas”&#xff0c;这篇文章发表在Cell Prolif期刊上&#xff0c;影响因子为8.5。 结果解读&#xff1a; EBV感染改变了胃癌中的…

FPGA分频电路设计(2)

实验要求&#xff1a; 采用 4 个开关以二进制形式设定分频系数&#xff08;0-10&#xff09;&#xff0c;实现对已知信号的分频。 类似实验我之前做过一次&#xff0c;但那次的方法实在是太笨了&#xff1a; 利用VHDL实现一定系数范围内的信号分频电路 需要重做以便将来应对更…

asp.net core 教程

asp.net core 教程 写在前面新建项目Get和PostGETPOST MVC-模型控制视图如何通俗理解MVC代码实例 API模型&#xff08;前后端分离&#xff09;前端代码后端代码 文件配置优先级优先级顺序 从数据库读取配置文件数据缓存 写在前面 学了快一年多的C#了&#xff01; 我最开始学的…

Stable Diffusion模型原理

AI 图像生成引人注目&#xff0c;它能够根据文字描述生成精美图像&#xff0c;这极大地改变了人们的图像创作方式。Stable Diffusion 作为一款高性能模型&#xff0c;它生成的图像质量更高、运行速度更快、消耗的资源以及内存占用更小&#xff0c;是 AI 图像生成领域的里程碑。…

MySQL数据库——InnoDB引擎-逻辑存储结构(表空间、段、区、页、行)

目录 表空间 段 区 页 行 之前我们初步介绍过InnoDB引擎的逻辑存储结构&#xff0c;如下图所示&#xff1a; 下面来对其每个组成部分详细了解&#xff1a; 表空间 表空间是InnoDB存储引擎逻辑结构的最高层&#xff0c; 如果用户启用了参数 innodb_file_per_table(在 …

快速排序之C++实现

描述 快速排序是一种常用的排序算法&#xff0c;它的思想是选取一个基准元素&#xff0c;将数组分成左右两部分&#xff0c;使得左边的元素都小于等于基准元素&#xff0c;右边的元素都大于等于基准元素&#xff0c;然后递归地对左右两部分进行快速排序。 实现步骤 选择一个…