源码分析
文章平均质量分 75
马占柱
Android行业多年软件开发经验,从事多年移动App开发,涉及医疗健康、商城、聊天、代驾打车、特种设备防护、公安边检查验领域;目前从事汽车车载系统开发工作。
展开
-
【唤醒屏幕总结】java.lang.RuntimeException: WakeLock under-locked target
最近线上的项目遇到了这样的错误java.lang.RuntimeException: WakeLock under-locked target at android.os.PowerManager$WakeLock.release(PowerManager.java:2665) at android.os.PowerManager$WakeLock.release(PowerManager.java:2627) at com.driving.driver.android.kepplive.Pow原创 2021-11-17 11:12:03 · 2627 阅读 · 0 评论 -
Android视图系统的设计与实现
前言说到Android视图大家第一反应肯定是Activity以及View,毕竟这是我们从入门开始接触最多的两个组件。但提到Activity和View之间联系以及设计背景可能会难道一大片人。其实关于视图系统还有一个重要概念Window不那么经常被提起,Android的设计者为了让开发者更容易上手,基于迪米特法则将Window屏蔽在内部。本文将从设计背景为出发点阐述Activity、Window、View的实现流程,帮你换一种角度看Android视图系统,相信读完会让你耳目一新。目录1. 设计背景转载 2021-07-01 11:28:57 · 232 阅读 · 0 评论 -
《Activity显示界面历险记》
前言在Activity显示View的过程中,有一些重要的角色总让人理不清,比如PhoneWindow、DecorView、ViewRootImpl。也常常有面试题会问到,他们四者之间的关系?创建的时机?View第一次绘制的时机?等问题。那么今天,就和大家一起从Activity启动开始 看看 到展示出View整个过程中,到底会经过哪些步骤,这之间各角色的关系又如何。1.动画展示为了方便大家理解,先通过动画的形式给大家展示这几位的关系:2源码解析从小爱诞生说起在Acti.转载 2021-03-08 15:26:33 · 395 阅读 · 0 评论 -
自定义 View【基础入门篇】
在实际使用的过程中,我们经常会接到这样一些需求,比如环形计步器,柱状图表,圆形头像等等,这时我们通常的思路是去Google 一下,看看 github 上是否有我们需要的这些控件,但是如果网上收不到这样的控件呢?这时我们经常需要自定义 View 来满足需求。接下来让我们开启自定义控件之路关于自定义控件,一般辉遵循一下几个套路首先重写 onMeasure() 方法 ...转载 2019-07-01 16:44:19 · 146 阅读 · 0 评论 -
Junit 入门使用教程
1、Junit 是什么? JUnit是一个Java语言的单元测试框架。它由Kent Beck和Erich Gamma建立,逐渐成为源于Kent Beck的sUnit的xUnit家族中最为成功的一个JUnit有它自己的JUnit扩展生态圈。多数Java的开发环境都已经集成了JUnit作为单元测试的工具。 注意:Junit 测试也是程序员测试,即所谓的白盒测试,它需要程序员知道被测试...转载 2018-11-29 15:04:39 · 268 阅读 · 0 评论 -
理解与配置Android studio中的gradle
使用gradle构建android应用时,你总是需要这样一个文件:build.gradle。你应该已经看过这个文件了,如果没有看过的话,你现在就可以看一下,它没有多少内容。它的简洁性得益于它提供了很多对设置和属性的默认值。gradle是基于groovy语言的,不过如果只是用它构建普通的工程的话,是可以不去学groovy的,如果想深入的做一下自定义的构建插件,可以考虑学一下groovy,因为它是基于...转载 2018-08-20 17:01:41 · 287 阅读 · 0 评论 -
Android中View的测量和布局过程
一直以来只是粗略的知道View的绘制会经过measure、layout到最终的draw三个过程,但对其中详细的measure和layout过程一无所知,很影响对一些特殊场景下的布局。ViewRoot和DecorViewViewRootViewRoot对应ViewRootImpl类,它是连接WindowManager和DecorView的纽带,View的三大流程均是通过ViewRootI...转载 2018-07-26 09:39:20 · 214 阅读 · 0 评论 -
LayoutInflater 源码解析
备注:本文基于 Android 8.1.0。1、LayoutInflater 简介Instantiates a layout XML file into its corresponding View objects. It is never used directly. Instead, use Activity.getLayoutInflater() or Context.getSys...转载 2018-07-25 09:15:42 · 164 阅读 · 0 评论 -
Android进阶——Android消息机制之Looper、Handler、MessageQueen
前言Android消息机制可以说是我们Android工程师面试题中的必考题,弄懂它的原理是我们避不开的任务,所以长痛不如短痛,花点时间干掉他,废话不多说,开车啦Android消息机制的简介在安卓开发中,常常会遇到获取数据后更新UI的问题,比如:在获取网络信息后,需要弹出一个ToastHttpUtils.doGet("https://www.so.com/", new Callback() { ...转载 2018-05-07 11:46:35 · 204 阅读 · 0 评论 -
ArrayList源码分析
原文。。。。。。。。。ArrayList是什么ArrayList可以理解为动态数组,它的容量能动态增长,该容量是指用来存储列表元素的数组的大小,随着向ArrayList中不断添加元素,其容量也自动增长ArrayList允许包括null在内的所有元素ArrayList是List接口的非同步实现ArrayList是有序的注意:自动增长会带来数据向新数组的重新拷贝,因此,如果可预知数据量的多少,可在构造...转载 2018-03-07 10:51:10 · 174 阅读 · 0 评论 -
HashMap源码分析
原文博客HashMap是什么HashMap是基于哈希表的Map接口的非同步实现HashMap中元素的key是唯一的、value值可重复HashMap允许使用null值和null键HashMap中的元素是无序的HashMap的数据结构HashMap是一个“链表散列”的数据结构,即数组和链表的结合体,如图所示从图中看出,HashMap底层就是一个数组结构,数组中的每一项又是一个链表,当新建一个 Has...转载 2018-03-07 10:43:38 · 243 阅读 · 0 评论