![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android
文章平均质量分 87
李小四的
值得你的时间
展开
-
Android GC 简史
Android 开发者对于 GC 既熟悉又陌生,听说过很多虎狼之词,对一些问题又不置可否;今天聊聊 Android 里的 GC,如果你对于下面的问题有兴趣又没答案,那你应该会有些收获:JVM、Dalvik、ART, 它们之间是什么关系?所有版本的 Android 都是分代管理堆内存吗?垃圾对象到底是怎么被回收的?「内存抖动」你怕不怕?作为一个应用层开发者,我真的需要关心 Android GC 吗?前言:概念辨析为了避免一些朋友不是很清楚概念,在正文开始之前,先简单辨析一下:GC.原创 2021-05-25 22:09:53 · 650 阅读 · 2 评论 -
「Android Binder」AIDL中的 in / out 到底是啥?
用过aidl的同学,可能见过下面的写法:interface IInterface { void foo0(in int input); void foo1(out IDTParcel parcel); void foo2(inout IDTParcel parcel);}不知道你有没有好奇过这里的 in / out / inout 是什么意思呢?directional tag去官网一查,只找到一点点信息:All non-primitive parameters req原创 2021-04-03 23:39:16 · 635 阅读 · 3 评论 -
【Android Tips】小厂的扫码还能怎么做?
先说重点,你的App能识别下面这个二维码吗?如果扫码功能基于ZXing与ZBar,而且没有自定义处理过数据,大概率是不行的。这个时候,你可以试试google这个(基于机器学习的)库:Scan Barcodes with ML Kit on AndroidSample: ML Kit Vision Showcase App with Material Design()结果截图:下面说一下我面临的问题与思考过程今天接到一个优化扫码的任务,然后收到了下面的二维码(就是上面那个):扫码比原创 2021-01-28 11:39:07 · 309 阅读 · 0 评论 -
「Android渲染」图像是怎样显示到屏幕上的?
我们每天花很多时间盯着手机屏幕,不知道你有没有好奇过:手机屏幕上的这些东西是怎么显示出来的?这时候来了一位Android程序员(当然也可以是iOS或者是前端程序员)说: 这里显示的其实是一个View树,我们看到的都是大大小小的View。。。。听起来很有道理,我们也经常指着屏幕说这个View怎么怎么样,可问题又来了:屏幕认识View吗?我们把一个View发给屏幕,它就显示出来了?程序员老兄又来了: 屏幕当然不能识别View,它作为一个硬件,只能根据收到的数据改变每个像素单元的数据,这样整体原创 2021-01-24 22:55:09 · 1803 阅读 · 2 评论 -
【Android渲染】在onDraw()中创建对象的隐形成本
熟悉Android自定义View的人大概都知道:不要在onDraw里创建对象大家在讲到这里,理由大概都是:onDraw()被调用快速高频 -->快速频繁申请内存 —>频繁GC–>线程挂起 -->UI卡顿当然,上面的理由重要且正确,没有什么可说的。因为它明显地写在了onDraw()里,你一看就能联想到这些内容,所见即所得。今天聊一个容易被忽略(或完全不知道)的隐形成本:我们重写onDraw()方法是为了自定义View,这时创建的对象很可能是与View绘制相原创 2021-01-18 03:05:33 · 826 阅读 · 0 评论 -
【Android渲染】为什么alpha渲染性能低?
开门见山1. 多次写入像素在渲染不透明的像素时,只需要写入一次在渲染透明像素时,每个像素至少需要写入两次第一次是之前的像素值第二次把之前的颜色与设置的不透明度做混合,产生一个新的颜色值,写入这个新的颜色值。我们看到的一层下面有另一层的半透明效果,对于屏幕来说就是一个混合后的具体的颜色值。2. 指令重排无效发给RenderThread的DisplayList,里面的内容是按照View层级来排列的,默认顺序执行,但这样性能并不好:分治、归并的思路可以提高性能,大家都听过指令重排序原创 2020-12-06 00:55:00 · 414 阅读 · 0 评论