优化页面渲染速度的一个方向是简化布局和减少嵌套,ConstraintLayout
的特性很适合处理这方面的优化,一直以来我也是尽可能的在各种场景下使用ConstraintLayout
,保证Fragment
页面或者 RecyclerView
的ViewHolder
里的itemView
中只有一个布局,但是最近在适配新的开发板
设备过程中,个别页面打开速度出现比较严重的卡顿并在logcat
里打印了ANR Warning
日志,从而让我定位到了卡顿的元凶是ConstraintLayout
的onLayout
和onMeasure
方法,这篇文章就是记录该问题出现和解决的过程。
RxJava 实用案例
个人使用RxJava
接近十年,是国内比较早的一批把RxJava
做为主要技术栈的Android
开发者,一些在当时看来比较复杂的业务逻辑,最后都通过RxJava
的操作符解决,包括后面开发语言切换到kotlin
后使用协程做异步开发,我个人也比较偏向于使用Flow
这个跟RxJava
很像的数据流式操作框架。现如今开发语言又切回到Java
,对Rxjava
的使用场景也更丰富了,下面简单介绍一下我用RxJava
在Android
开发中的一些实用案例。
Android 性能优化之卡顿优化
目前所开发的应用是在开发板
上的一款应用市场
类应用,设备主要涉及到拉杆音响和电视盒子两类,其中拉杆音响的设备性能要略好于电视盒子类的设备,年初应用在添加了一些高级功能比如GIF轮播
这类对性能比较有挑战的功能后,在上述两类系统和性能排名较低的设备上暴力测试和Monkey
测试时有较大的概率发生ANR
,加上平时打开一些比较复杂页面的响应速度也比较堪忧,于是就开启了一系列优化的过程。
DiffUtil优化RecyclerView数据加载
由于项目里大量使用了RecyclerView
控件,在数据加载后进行数据刷新时只是使用了notifyDataSetChanged
方法,该方法也被系统警告说效率不高,碰巧最近在做性能优化,就研究了下DiffUtil
的使用,然后基于AsyncListDiffer
封装了BaseDiffAdapter
和BaseDiffHolder
,在适合场景的页面下把之前的BaseAdapter
和BaseHolder
做了简单替换。下面就来详细介绍下DiffUtil
的使用方法。
Android开发过程中的命名规范
最近在组内分享一些提升组员开发能力的文章,起因是去年我刚加入公司时重做了一款内部自研的项目,正好这个项目最近也接近尾声,领导希望我参照新旧项目的对比,把我在重构过程中运用的一些实用开发技能给分享出来,来帮助其他开发人员提升开发能力,命名规范是其中比较基础且重要的部分,下面就做一些简单的总结。
个人技术心得分享
最近项目间隙时间有些长,就主动发起一次内部技术分享,主要从模块化,简洁代码,高质量开发,技术焦虑等几个方面做了一些思考,其中部分内容没有写的那么详细,需要在现场分享的时候做一些引申,从业这么多年一直在闷头做项目,偶有感悟也随着项目的忙碌遗忘到九霄云外,这次也算是一个自我总结的好机会。
软技能-代码之外的生存指南读后感
软技能-代码之外的生存指南这本书是专门为“码农”写的一本书,作者结合自己的经历旨在告诉我们作为程序员获取成功的一些路径或者职业规划,前些年国内一些流行的概念像提前退休、一年买一套房、远程开发和为自己工作等都能在本书中找到出处,包括我网络上见识到的一些小有成就的人,他们的一些自我营销的方法或者做自己产品的推广方式等也都有迹可循。
软技能-代码之外的生存指南概括
该篇章是我通读“软技能-代码之外的生存指南”这本书后的对于每个章节的简短概括,用于后续重复阅读时的参考,也可以当做回顾时的快速索引。当前做笔记时已经是我第三次读这本书,给了我很多的启发跟方向。
低端设备上GIF依次播放实践
GIF 播放是我司应用市场类应用的一个重要的功能,之前做图片加载框架技术选型时也是以加载 GIF 的性能为基准来进行选择的,GIF 播放功能在手机端比较常见,通常交给支持 GIF 的图片加载框架处理就行,但是对于开发板端而言,这类功能对内存和 CPU 有较大的挑战,稍微不注意就很容易造成 ANR 和应用崩溃。
Appium + Python外卖医药数据爬取
最近一个开药店的朋友找我抱怨,有一个同行最近在搞恶性竞争,同类的商品经常标价比他们家少一分钱,应该是从哪来搞来了他们家在外卖平台上的商品数据,从而准对性的进行调价,于是就找到我,问我有没有办法爬取这家同行的数据,想要做一些应对避免流失很对线上的订单,于是就有了这次尝试。