Android性能优化
文章平均质量分 93
minminaya
简书博客文章迁移中https://www.jianshu.com/u/43a04ef9d4c6
展开
-
如何系统学习 Android 插件 ASM
可能大家刚开始学习 Transform 的时候会比较迷茫,看到漫天的博客上来就是一个 Gradle 插件,各种编译时黑科技修改源码。如果目的只是模仿大佬们的教程,稍微改改 Transform 实现可能还好,但是可能有些定制性的功能,可能就会抠破头了。我之前也有这种情况,后面我思考了怎么解决这个问题。其实我认为,上来就搞 Transform 相对于整个插件开发的路子来说,太跨越性了,根本原因还是地基没打好就建摩天大楼了。本篇我会分享下 Transform 相关的从入门到入门历程。一步一步踏踏实实的。大致路线原创 2022-04-13 13:09:29 · 2123 阅读 · 0 评论 -
轻松玩转 Android 复杂列表埋点曝光(也许是一行噢)
一个好的产品离不开数据分析,在手机 APP 中,数据分析极致化需要细致到某个时刻列表曝光的了哪几个 Item。2022 年了,基本上目前 Android 上可以滑动的复杂列表都是 RecyclerView 或者其扩展,这里分享一个封装的思路。一、基本思路什么是列表曝光简单的理解就是用户在肉眼可感知范围内真正看到了数据就算曝光,包括数据刷新了如果非要细化细节:1、列表数据变化时,比如上滑下滑2、页面从隐藏到显示,比如切换页面、前后台切换一些方案的对比各种方案核心都差不多,最关键原创 2022-03-23 09:49:58 · 1405 阅读 · 0 评论 -
更优雅的在 Kotlin 中封装 Retrofit (去掉 Catch)
如果可以我想改名成《看完不会在 Kotlin 中封装 Retrofit就砍我》,嘿嘿…Retrofit 是一个设计相当精良的框架,特别是其可扩展性上。官方提供的协程的使用方式和 API 实现在一些情况下不大优雅,本文主要是 bb 对其的相关扩展,让项目代码变得更傻瓜式和对 Retrofit 协程方式编写代码方式更加优雅。基于下述思路封装的网络框架已经在线上持续稳定使用 1 年多了,适合各种牛(qi)逼(pa)的场景,本篇各个环节会涉及到奇奇怪怪的想法…Retrofit 对协程的支持Retrofi原创 2022-03-23 09:44:58 · 1618 阅读 · 0 评论 -
Android通用圆角布局(兼容Android P)
Android通用圆角布局(兼容Android P)Android通用圆角布局,可以解决Android P版本xfermode方案裁剪黑边问题和xfermode在列表view中使用滑动时EGL内存泄露问题其诞生有3个原因1、之前使用的XferMode裁剪方案在P版本失效2、xfermode圆角裁剪方案在RecyclerView中使用,滑动时会出现EGL内存泄露问题(系统api未做好内存回收),使用GeneralRound,可以解决L版本上的机器3、希望可以快速将一个View装饰包装变成支持裁原创 2022-03-23 09:43:54 · 1385 阅读 · 0 评论 -
Android性能优化之布局优化
在布局文件中的背景遮挡的情况下,避免绘制DecorView的背景(有别于Activity的背景),减少过度绘制。android:windowBackground属性就是DecorView的背景将Activity的背景放到DecorView的背景中(虽然性能优化不大,但是能把平滑的感知提供给用户)离屏缓冲开启硬件层(API 14后默认开启)view.setLayerTy...原创 2018-04-14 23:29:42 · 189 阅读 · 0 评论 -
Android性能优化之内存优化
需要知道的一些Android内存管理是paging分页和memory-mapping内存映射技术(通过映射将二级存储的相关文件关联),没有使用虚拟内存技术,可用内存数量完全取决于RAM。ART相对于Dalvik,减少了垃圾回收的步骤,为位图对象Bitmap添加了一个特殊的内存块。ART虚拟机的AOT提前编译在Android N时候添加了JIT及时编译,用于在应用程序执行期间,它仅仅是用于...原创 2018-04-16 15:37:27 · 213 阅读 · 0 评论 -
Android性能优化之线程优化
不能通过非UI线程对View进行操作。因为Android的UI不是安全的,如果View能被不同的线程所访问或修改,那么就可能在程序的执行期间,产生不可预期的行为或者并发错误。使用线程时,避免在循坏中使用同步,因为获取和释放锁的操作代价很大。会引起CPU资源的损耗。处理多线程以及线程间通信时,使用HandlerThread来操作,它内部包装了Looper,记得不用的时候退出/释放资源哦。...原创 2018-04-19 23:38:37 · 300 阅读 · 0 评论