2024Android App开发工作必知必会之【性能优化】

个有向无环图的顺序加载,其实还是会做一些进程的判断,要判断某些项目是不是要在主进程里加载,某些要在初始进程里面加载

从 Spark 的 DAGScheduler 中领悟到它的核心思想,面向阶段调度(Stage-Oriented Scheduler):把应用划分成一个个的阶段

(Stage),再把任务(Task)安排到各个阶段中去,任务的编排则是通过构建 有向无环图(DAG),把任务依赖通过图的方式梳

理得 井井有条。因为它分阶段执行,先集中资源把阶段一搞定,再齐心协力去执行阶段二,这样即能控制拥塞,又能保证时序,还

能并发执行,让设备性能尽可能得到发挥大家可以参考淘宝的全链路优化的案例:历时1年,上百万行代码!首次揭秘手淘全链路性能优化(上)

13、启动网络链路优化

问题和优化点

发送处理阶段:网络库bindService影响前x个请求,图片并发限制图片库线程排队

网络耗时:部分请求响应size大,包括 SO文件,Cache资源,图片原图大尺寸等

返回处理:个别数据网关请求json串复杂解析严重耗时(3s),且历史线程排队设计不合适

上屏阻塞:回调UI线程被阻,反映主线程卡顿严重。高端机达1s,低端机恶化达3s以上

回调阻塞:部分业务回调执行耗时,阻塞主线程或回调线程

优化

多次重复的请求,业务方务必收敛请求次数,减少非必须请求。

数据大的请求如资源文件、so文件,非启动必须统一延后或取消。

业务方回调执行阻塞主线程耗时过长整改。我们知道,肉眼可见流畅运行,需要运行60帧/秒, 意味着每帧的处理时间不超过

16ms。针对主线程执行回调超过16ms的业务方,推动主线程执行优化。

协议json串过于复杂导致解析耗时严重,网络并发线程数有限,解析耗时过长意味着请求长时间占用MTOP线程影响其他关键

请求执行。推动业务方handler注入使用自己的线程解析或简化json串。

14、预加载

Activity 打开之前就预加载数据,在 Activity 的 UI 布局初始化完成后显示预加载的数据,大大缩短启动时间。 可以参考 :https://g

ithub.com/luckybilly/PreLoader/blob/master/README-zh-CN.md

15、保活

保活,是各个应用开发者的噩梦,也是 Android 厂商关注和打击的重点。不过从启动的角度来看,如果应用进程不被杀,那么启动

自然就快了,所以保活对应用启动速度也是有极大的帮助。

当然这里说的保活,并不是建议大家用各种黑科技、相互唤醒、通知轰炸这种保活手段,而是提供真正的功能,能让用户觉得你在

后台是合理的、可以接收的。比如在后台的时候,资源能释放的都释放掉,不要一直在后台做耗电操作,该停的服务停掉,该关的

动画关掉。当然对于应用开发者来说,上面说的都太多理想化了,而且目前的手机厂商也会很暴力,应用到了后台就会处理掉,不过这毕竟是

一个方向,Google 也在规范应用后台行为和规范厂商处理应用这两方面都在做努力,Android 系统的生态,还是需要应用开发者

和 Android 厂商一起取改善。

当然保活还有一条路就是走跟厂商的合作,优化后台内存、去掉重复拉起、去掉流氓逻辑、积极响应低内存警告,做好这些话后可

以跟系统厂商联系,谈放到查杀白名单和自启动白名单的可行性

16、业务梳理

这里涉及到具体的业务,每个 App 都不一样,但是所要做的事情都是一样的,下面是邵文在高手课里面提到的:

梳理清楚启动过程中的每一个模块,哪些是一定需要的,那些是可以砍掉,那些是可以懒加载的

根据不同的业务场景决定不同的启动模式

懒加载防止集中化

必要且耗时:启动初始化,考虑用线程来初始化

必要不耗时:首页绘制

非必要但耗时:数据上报、插件初始化

非必要不耗时:不用想,这块直接去掉,在需要用的时再加载

然后按需进行加载优化

更多有关Android性能优化的分享


优化心得和实战经验

性能问题是造成App用户流失的罪魁祸首之一。App的性能问题包括崩溃、网络请求错误或超时、响应速度慢、列表滚动卡顿、流

量大、耗电等等。而导致App性能低下的原因有很多,除去设备硬件和软件的外部因素,其中大部分是开发者错误地使用线程、

锁、系统函数、编程范式、数据结构等导致的。即便是最有经验的程序员,也很难在开发时就能避免所有导致性能低下的“坑”,因

此解决性能问题的关键是在于能不能尽早地发现和定位这些“坑”。

1、移动端性能监控方案Hertz

2、Android性能优化后续

3、Android性能优化之虚拟机调优

4、Android UI 性能优化

5、性能提示

6、美团外卖Android Lint代码检查实践

7、使用Android Studio和MAT进行内存泄漏分析

8、手淘全链路性能优化

9、手Q Android缓存监控与优化实践

10、微信读书(Android)阅读引擎卡顿监控测试

响应速度

启动时间和响应时间是App带给用户的最直观的性能体验。因此,无论是何种类型的App,我们都不能忽视响应时间的测试。除了稳定性以外,对于性能纬度来说,哪个方面的性能是最重要的呢?毫无疑问,就是应用的启动速度。

1、 Android App 启动优化全记录

2、Android 中如何计算 App 的启动时间?

3、应用启动时间

4、Android 冷启动优化除了老三样还有哪些新招?

5、支付宝 App 构建优化解析:通过安装包重排布优化 Android 端启动性能

6、Redex 初探与 Interdex:Andorid 冷启动优化

流畅度

在不同层次的开发工程师手里,因为技术水平的参差不齐,即使很多手机在跑分软件性能非常高,打开应用依然存在卡顿现象。

另外,随着产品内容迭代,功能越来越复杂,UI页面也越来越丰富,也成为流畅运行的一种阻碍。综上所述,对APP进行性能优化已成为开发者该有的一种综合素质,也是开发者能够完成高质量应用程序作品的保证。

1、Android 中的卡顿丢帧原因概述 - 方法论

2、Android 中的卡顿丢帧原因概述 - 系统篇

3、Android 中的卡顿丢帧原因概述 - 应用篇

4、Android 无障碍服务导致的整机卡顿案例分析

5、显示性能指标

6、渲染速度缓慢

7、Android 流畅度检测原理简析

8、Android JankTracker 原理解析

9、App流畅度优化:利用字节码插桩实现一个快速排查高耗时方法的工具

内存

Android 低内存会导致性能问题 , 具体表现就是响应慢和卡顿 。比如启动一个应用要花比平时更长的时间 ;滑动列表会掉更多帧 ;后台的进程减少导致冷启动变多 ;手机很容易发热发烫等 。

1、 Android 中低内存对性能的影响

2、 Android OOM案例分析

3、 Android 代码内存优化建议 - Android 资源篇

4、 Android 代码内存优化建议 - Android 官方篇

5、 Android 代码内存优化建议 - Java 官方篇

6、 Android 内存优化(1) - MAT 使用入门

7、 Android 内存优化之二 - MAT使用进阶

8、 Android 内存优化之三 - 打开 MAT 中的 Bitmap 原图

9、 Android 代码内存优化建议 - OnTrimMemory 优化

10、Android LowMemoryKiller原理分析

11、Android匿名共享内存(Ashmem)原理

图形栈

Android系统中图形系统是相当复杂的,包括WindowManager,SurfaceFlinger,Open GL,GPU等模块。 其SurfaceFlinger作为负责绘制应用UI的核心,从名字可以看出其功能是将所有Surface合成工作。 不论使用什么渲染API, 所有的东西最终都是渲染到”surface”. surface代表BufferQueue的生产者端, 并且 SurfaceFlinger所消费, 这便是基本的生产者-消费者模式. Android平台所创建的Window都由surface所支持, 所有可见的surface渲染到显示设备都是通过SurfaceFlinger来完成的.

1、 LWN大作:Android display pipeline本身以及进程调度!

2、 Android 中的 Hardware Layer 详解

3、 Android硬件加速原理与实现简介

4、 Android图形系统概述

5、 Choreographer原理

6、 SurfaceFlinger启动篇

7、 SurfaceFlinger绘图篇

8、 Android应用程序UI硬件加速渲染技术简要介绍和学习计划

9、 Android应用程序UI硬件加速渲染环境初始化过程分析

10、Android应用程序UI硬件加速渲染的预加载资源地图集服务(Asset

Atlas Service)分析

11、Android应用程序UI硬件加速渲染的Display List构建过程分析

12、Android应用程序UI硬件加速渲染的Display List渲染过程分析

13、Android应用程序UI硬件加速渲染的动画执行过程分析

14、Android中的GraphicBuffer同步机制-Fence

15、Android P 图形显示系统——硬件合成HWC2

16、Android P 图形显示系统——Android VirtualDisplay解析

17、Android P 图形显示系统—— 上层Client和SurfaceFlinger的交互

18、Android P 图形显示系统—— SurfaceFlinger合成流程(一)

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级安卓工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Android移动开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Android)
img

最后

光有这些思路和搞懂单个知识的应用是还远远不够的,在Android开源框架设计思想中的知识点还是比较多的,想要搞懂还得学会整理和规划:我们常见的**Android热修复框架、插件化框架、组件化框架、图片加载框架、网络访问框架、RxJava响应式编程框架、IOC依赖注入框架、最近架构组件Jetpack等等Android第三方开源框架,**这些都是属于Android开源框架设计思想的。如下图所示:

image

这位阿里P8大佬针对以上知识点,熬夜整理出了一本长达1042页的完整版如何解读开源框架设计思想PDF文档,内容详细,把Android热修复框架、插件化框架、组件化框架、图片加载框架、网络访问框架、RxJava响应式编程框架、IOC依赖注入框架、最近架构组件Jetpack等等Android第三方开源框架这些知识点从源码分析到实战应用都讲的简单明了。

由于文档内容过多,篇幅受限,只能截图展示部分,更为了不影响阅读,这份文档已经打包在GitHub,有需要的朋友可以直接点此处前往免费下载

image

image

整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~

droid第三方开源框架这些知识点从源码分析到实战应用都讲的简单明了。**

由于文档内容过多,篇幅受限,只能截图展示部分,更为了不影响阅读,这份文档已经打包在GitHub,有需要的朋友可以直接点此处前往免费下载

[外链图片转存中…(img-ZJt2W05e-1710744499711)]

[外链图片转存中…(img-7IDrBijc-1710744499711)]

整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~

你的支持,我的动力;祝各位前程似锦,offer不断!!!

  • 11
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值