您当前的位置:首页 > 电脑百科 > 程序开发 > 移动端 > Android

功夫“唯快不破”,Android开发APP该如何优化才能做到极致体验?

时间:2022-08-01 15:41:03  来源:  作者:Android秃老师

一款App如何才能被称为“好用”呢?如何才能够受到大家的喜爱呢?其实这非常简单:功能强大和性能优越。

说到性能,首先就是APP的启动性能问题,正所谓万事开头难,这个“开头”在这里可以理解为APP的启动,APP的启动问题很大一部分决定了是否能留住用户。

8秒定律测试

在性能测试中遵循2-5-8原则:

  • 当App启动的响应时间小于2s,客户认为app启动速度很快
  • 当App启动的响应时间介于2-5秒之间,客户认为app启动速度还可以
  • 当App启动的响应时间介于5-8秒客户认为app启动速度很慢,但还可以接受
  • 当App启动的响应时间大于8秒,客户认为app启动速度是不可接受的,甚至认为App没有响应。

因此,做好启动优化是非常有必要的 。

对我们Android开发人员来说;性能优化是必不可少的。而进入大厂性能优化,往往也是面试过程中必问到的技术之一。

例如:

如何去除过重的app初始化 ? 怎样通过减少冗余或嵌套布局来展平视图层次结构 ? 开启线程懒加载资源怎么做? 阻塞磁盘上的屏幕绘图或网络I / O。

这里简单说几个启动优化相关的面试题例子;如果你都会当我没说。但是就这些来技术做优化肯定是不够的。

要优化App的启动速度,首先需要了解App的启动流程。在Android系统中,系统会为每一个应用开辟一个linux进程,默认情况下应用都运行在自己的进程中。

当用户点击桌面图标启动一个应用界面时,底层的完整流程如下:


 

 

从流程图得知:

  • 如果App进程不存在,则需要执行3,4,5,6步,我们称之为“冷启动”,一般是首次启动,或者进程被杀死后;
  • 如果App进程存在,则直接实例化并启动目标Activity,我们称之为“温启动”,一般发生在应用退出后,进程被杀前;
  • 还有一种情况,如果进程和目标Activity都存在,只是切到后台,我们称之为“热启动”,如按了Home键。

根据以上app启动流程,我们可以往那些方面进行优化呢?怎么样把优化做到极致这是关键,大多数人都有过优化的经历,但是公司程序员的刚需是极大化的,项目优化做起来很吃力,许多人勉强能达到项目要求。

这是为什么?究竟是哪方面做的不足?而我们怎么细分优化呢?

这里我推荐阿里的架构师整理的《Android性能优化》资料分享,让你站在高工的角度,深度理解APP启动原理与内存相关原理,掌握一线大厂启动与内存方面的各种优化手段。



Tags:Android开发   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
Android开发中常见的Hook技术有哪些?
Hook技术介绍Hook技术是一种在软件开发中常见的技术,它允许开发者在特定的事件发生时插入自定义的代码逻辑。常见的应用场景包括在函数调用前后执行特定的操作,或者在特定的事...【详细内容】
2023-12-25  Search: Android开发  点击:(92)  评论:(0)  加入收藏
Android开发中如何进行单元测试?
单元测试介绍单元测试是软件开发中的一种测试方法,用于验证代码中的最小可测试单元(通常是函数或方法)是否按预期工作。单元测试通常由开发人员编写,旨在隔离和测试代码的特定部...【详细内容】
2023-12-11  Search: Android开发  点击:(170)  评论:(0)  加入收藏
Context在Android开发中的重要角色
一、Context介绍在Android开发中,Context是一个非常重要的类,常被翻译为上下文,它代表了当前应用程序的运行环境。可以将Context理解为一个全局信息的接口,它提供了访问应用程序...【详细内容】
2023-11-01  Search: Android开发  点击:(256)  评论:(0)  加入收藏
6个Android开发者不可不知的设计模式
本文介绍6种常见的设计模式,并提供解决问题的方法,帮助您提高代码的可重用性和可维护性。 这是作为安卓开发者最重要的设计模式。1 什么是设计模式设计模式是一种可以重复使用...【详细内容】
2023-06-08  Search: Android开发  点击:(171)  评论:(0)  加入收藏
功夫“唯快不破”,Android开发APP该如何优化才能做到极致体验?
一款APP如何才能被称为“好用”呢?如何才能够受到大家的喜爱呢?其实这非常简单:功能强大和性能优越。说到性能,首先就是APP的启动性能问题,正所谓万事开头难,这个“开头”在这里可...【详细内容】
2022-08-01  Search: Android开发  点击:(374)  评论:(0)  加入收藏
Android开发组件化与插件化详解
什么是组件化?通俗易懂来讲就是,拆成多个module开发就是组件化。什么是插件化?App的部分功能模块在打包时并不以传统⽅式打包进apk⽂件中,⽽是以另⼀种形式⼆次封装进apk内部,或...【详细内容】
2022-07-15  Search: Android开发  点击:(496)  评论:(0)  加入收藏
美国科技公司会倒逼国内Android开发结束内卷时代?
今天看到知群的 CEO 马力发的一条微博,很有意思。 首先,我们都知道美国的科技公司都在远程公司,而且前一段时间,美国的民宿平台爱彼迎 aribnb 这家公司,宣布允许员工永久远程办公...【详细内容】
2022-05-16  Search: Android开发  点击:(543)  评论:(0)  加入收藏
Android开发常用工具
、Android Studio谷歌推出的Android集成开发工具,经过多年的迭代发展已经变得非常强大及人性化,各式各样的工具插件满足日常的开发需求,也可以自己制作工具插件,下载即可赠送SDK...【详细内容】
2022-02-24  Search: Android开发  点击:(477)  评论:(0)  加入收藏
Android开发精通Framework是真的可以为所欲为
近十几年来,随着以Android系统为代表的智能手机普及与发展,互联网行业早已进入“移动”的时代。但是现如今的“风口”已经从移动转向,整个移动互联网行业正处于增量下降、存量...【详细内容】
2022-02-10  Search: Android开发  点击:(544)  评论:(0)  加入收藏
作为Android开发,这个知识点一定要知道,官方也改了 2 次
今天面试遇到同学说做过内存优化,于是我一般都会问那 Bitmap 的像素内存存在哪?大多数同学都回答在 java heap 里面,就比较尴尬,理论上你做内存优化,如果连图片这个内存大户内存...【详细内容】
2021-12-23  Search: Android开发  点击:(385)  评论:(0)  加入收藏
▌简易百科推荐
Android Emulator黑屏怎么办 Android模拟器黑屏解决方法
Android Emulator黑屏问题困扰了非常多的玩家,Android Emulator作为一款安卓模拟器,可以让你在电脑上运行和浏览安卓应用程序,但是程序本身不是很稳定,很容易会出现黑屏,启动不了...【详细内容】
2024-03-04  18183游戏网    Tags:Android Emulator   点击:(46)  评论:(0)  加入收藏
Android开发中常见的Hook技术有哪些?
Hook技术介绍Hook技术是一种在软件开发中常见的技术,它允许开发者在特定的事件发生时插入自定义的代码逻辑。常见的应用场景包括在函数调用前后执行特定的操作,或者在特定的事...【详细内容】
2023-12-25  沐雨花飞蝶  微信公众号  Tags:Android   点击:(92)  评论:(0)  加入收藏
在Android应用开发中使用NFC功能
NFC介绍NFC是指“近场通讯”(Near Field Communication),它是一种短距离无线通信技术,允许设备在非接触或极短距离内进行通信。NFC通常用于移动支付、门禁系统、智能标签和其他...【详细内容】
2023-12-22  沐雨花飞蝶  微信公众号  Tags:Android   点击:(104)  评论:(0)  加入收藏
关于Android图像Bitmap类,你要知道的一切
Bitmap介绍Bitmap是一种图像文件格式,它由像素阵列组成,每个像素都有自己的颜色信息。在计算机图形学中,Bitmap图像可以被描述为一个二维的矩阵,其中每个元素代表一个像素的颜色...【详细内容】
2023-12-19  沐雨花飞蝶  微信公众号  Tags:Android   点击:(102)  评论:(0)  加入收藏
Android开发中如何进行单元测试?
单元测试介绍单元测试是软件开发中的一种测试方法,用于验证代码中的最小可测试单元(通常是函数或方法)是否按预期工作。单元测试通常由开发人员编写,旨在隔离和测试代码的特定部...【详细内容】
2023-12-11  沐雨花飞蝶  微信公众号  Tags:Android   点击:(170)  评论:(0)  加入收藏
一篇聊聊Jetpack Room实现数据存储持久性
Room介绍Room 是 Android Jetpack 组件库中的一部分,它是用于在 Android 应用中进行本地数据库访问和管理的库。Room 提供了一个抽象层,使开发者能够更轻松地访问 SQLite 数据...【详细内容】
2023-12-08  沐雨花飞蝶  微信公众号  Tags:Jetpack   点击:(149)  评论:(0)  加入收藏
了解Android系统架构中的HAL硬件抽象层
在Android系统中,HAL的存在使得不同厂商的硬件可以统一被上层的应用程序调用,从而提高了系统的兼容性和可移植性。HAL还可以帮助开发者更方便地开发应用程序,因为他们不需要为...【详细内容】
2023-12-06  沐雨花飞蝶  微信公众号  Tags:Android   点击:(214)  评论:(0)  加入收藏
我们一起聊聊 IntentService 与 Service 的区别?
Service介绍Service组件是Android应用开发中的四大组件之一,用于在后台执行长时间运行的操作或处理远程请求。它可以在没有用户界面的情况下执行任务,并且可以与其他应用组件...【详细内容】
2023-12-06  沐雨花飞蝶  微信公众号  Tags:IntentService   点击:(179)  评论:(0)  加入收藏
Android数据对象序列化原理与应用
序列化与反序列化「序列化」是将对象转换为可以存储或传输的格式的过程。在计算机科学中,对象通常是指内存中的数据结构,如数组、列表、字典等。通过序列化,可以将这些对象转换...【详细内容】
2023-11-14  沐雨花飞蝶  微信公众号  Tags:Android   点击:(280)  评论:(0)  加入收藏
你了解Android中的SELinux吗?
SELinux介绍SELinux(Security-Enhanced Linux)是一种安全增强的Linux操作系统,它通过强制访问控制(MAC)机制来提供更高级别的系统安全保护。相比于传统的Linux访问控制机制(DAC),SEL...【详细内容】
2023-11-09  沐雨花飞蝶  微信公众号  Tags:Android   点击:(272)  评论:(0)  加入收藏
站内最新
站内热门
站内头条