每日一问:谈谈对 MeasureSpec 的理解

作为一名 Android 开发,正常情况下对 View 的绘制机制基本还是耳熟能详的,尤其对于经常需要自定义 View 实现一些特殊效果的同学。网上也出现了大量的 Blog 讲 View 的 onMeasure()、onLayout()、onDraw() 等,虽然这是一个每个 Android 开发都应该知晓的东西,但这一系列实在是太多了,完全不符合咱们短平快的这个系列初衷。那么,今天我们就来简单谈谈 ...

每日一问:简述 View 的绘制流程

Android 开发中经常需要用一些自定义 View 去满足产品和设计的脑洞,所以 View 的绘制流程至关重要。网上目前有非常多这方面的资料,但最好的方式还是直接跟着源码进行解读,每日一问系列一直追求短平快,所以本文笔者尽量精简。想必大多数 Android 开发都知道自定义 View 需要关注的几个方法:onMeasure()、onLayout() 和 onDraw(),这其实也是每个 View 至关...

每日一问:LayoutParams 你知道多少?

中着重讲解了 View 的测量流程。其中我提到了一句非常重要的话:View 的测量匡高是由父控件的 MeasureSpec 和 View 自身的 `LayoutParams 共同决定的。我们在前面的 每日一问:谈谈对 MeasureSpec 的理解 把 MeasureSpec 的重点进行了讲解,其实另外一个 LayoutParams 同样是非常非常重要。从概念讲起LayoutParams,顾名思义,就...

每日一问:讲讲 Java 虚拟机的垃圾回收

昨天我们用比较精简的文字讲了 Java 虚拟机结构,没看过的可以直接从这里查看:每日一问:你了解 Java 虚拟机结构么?今天我们必须来看看 Java 虚拟机的垃圾回收算法是怎样的。不过在开始之前,我们一定得确定哪些是活着的对象,又有哪些是可以进行回收的。判断对象是否存活方式引用计数算法对应判断一个对象是否可以回收,我想引用计数一定是最容易被想到的算法了吧。给每个对象加一个引用计数器,每当有一个...

每日一问:详细说一下 MeasureSpec.UNSPECIFIED

详细说一下 MeasureSpec.UNSPECIFIED前面的文章 我留下了一个疑惑,那就是到底为什么 NestedScrollView 要把子 View 的测量模式强行设置为 MeasureSpec.UNSPECIFIED ,这不,在鸿洋的 "wanAndroid" 中,他再次提出了这样的问题: 下面摘自用户「陈小缘啦啦啦」的回答,我觉得回答的非常到位,特别在这里和大家分享一下。UNSPECIFI...

每日一问:谈谈 volatile 关键字

这是 wanAndroid 每日一问中的一道题,下面我们来尝试解答一下。 为了本系列的「短平快」,今天我们就来第一个主角:volatile。保证内存可见性前面我们讲到:Java 内存模型分为了主内存和工作内存两部分,其规定程序所有的变量都存储在主内存中,每条线程还有自己的工作内存,线程的工作内存中保存了该线程使用到的变量的主内存副本拷贝,线程对变量的所有操作(赋值、读取等)都必须在工作内存中进行,而不...

每日一问:讲讲 JVM 的类加载机制

前面给大家讲解了 Java 虚拟的内存结构 以及 Java 虚拟机的垃圾回收机制,我们更加明白了 Java 的内存管理机制,今天我们来讲讲 Java 虚拟机的另外一个高频考点:类加载机制。JVM 的类加载过程分为加载、验证、准备、解析、初始化 5 个阶段。加载加载阶段由类加载器进行负责,类加载器根据一个类的全限定名读取该类的二进制字节流到 JVM 内部,然后转换为一个对应的 java.lang.Cl...

每日一问:说说你对 LeakCanary 的了解

昨天的问题说到了关于 内存泄漏需要注意的点,在文章最后有说到 LeakCanary 检测内存泄漏。实际上,我相信绝大多数人也知道甚至使用过这个库。 LeakCanary 的基本工作流程是怎样的?LeakCanary 的使用方式非常简单,只需要在 build.gradle 里面直接写上依赖,并且在 Application 类里面做注册就可以了。 对于工作原理我相信大家应该也是或多或少有一定了解,这里刚好有...
关于我们 联系我们 友情链接 LMLPHP后院 
本站由 LMLPHP 强力驱动 ©2014-2019 LMLPHP 耗时0.013850(s)
2019-08-21 19:59:51 1566388791