![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
源码解析
文章平均质量分 87
PYJTLK
这个作者很懒,什么都没留下…
展开
-
Android跨进程通信(五):Messenger源码解析
前面的文章我们学会了如何使用Messenger进行跨进程通信。本篇文章我们来探究一下Messenger源码。Messenger创建Messenger有两种构造方法,第一个是传入Handler,它是服务端的创建方式。第二个是传入IBinder,它是客户端的创建方式。首先来看第一种创建方式。Messenger内部有一个IMessenger成员变量,它是由Handler获取的。//Messenger.javapublic final class Messenger implements Parcelab原创 2022-02-02 00:27:20 · 1822 阅读 · 0 评论 -
Android跨进程通信(四):AIDL源码解析
本篇文章是AIDL的源码解析,不了解AIDL的朋友可以看看使用教程,熟悉了基本的使用后再来阅读本文章。阅读本文章的时候,把服务端和客户端的工程都打开结合着它们来一同分析。接口代码总览在我们编写AIDL并成功编译后,工程里便会自动生成一个Java接口文件。首先来总览这个文件,红色框的方法就是AIDL文件里声明的方法。文件里还有一个Stub静态内部抽象类,它implements了此Java接口(蓝色框),也就是说它或它的子类要把AIDL声明的方法给实现了。来看看Stub类。红色框说明Stub类继承自B原创 2022-02-01 18:38:05 · 1422 阅读 · 0 评论 -
Android Logger日志框架源码解析
前言本篇文章将解析Android开源日志框架Logger的源码,Logger的版本是2.2.0,对这个框架还不了解的朋友可以先快速学习基本使用再来阅读本文。初始化先看一下Logger初始化的基本操作FormatStrategy logcatFormatStrategy = PrettyFormatStrategy.newBuilder() .tag("MyTag") .showThreadInfo(true)原创 2021-03-19 15:07:35 · 388 阅读 · 0 评论 -
Android OnLongClickListener原理解析及优先级分析
上一篇对 OnClickListener 和 OnTouchListener 的源码进行了分析。本篇文章讲解OnLongClickListener的实现原理。源码分析下面是 OnLongClickListener 的基本使用方法。button.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View v) {原创 2020-07-09 18:36:16 · 1947 阅读 · 0 评论 -
Android AsyncInflater的源码解析及内存泄漏分析
先来看看AsyncInflater的基本使用。 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); new AsyncLayoutInflater(this).inflate(R.layout.activity_test, null, new AsyncLayoutInflater.OnInflateFinishedLi原创 2020-06-26 00:30:06 · 836 阅读 · 0 评论 -
Android LeakCanary的源码解析
初始化LeakCanary需要在Application的onCreate方法上完成初始化。@Overridepublic void onCreate() { super.onCreate(); if (LeakCanary.isInAnalyzerProcess(this)) { // This process is dedicated to LeakCanary for heap analysis. // You should not init you原创 2020-06-16 11:42:18 · 216 阅读 · 0 评论 -
Android LruCache的源码解析
Lru是一种常见的置换策略,并不是Android所特有的。它的特点是置换近期最久未被访问的数据,下面来看看Android是怎么实现LRU缓存策略的。创建LruCache的创建的基本方法如下。LruCache<Bitmap,String> mCache = new PictureCache((int) (Runtime.getRuntime().maxMemory() / 1024 / 8));这里的使用的单位是KB,Cache的大小为应用内存的1/8,来看看源码。private fi原创 2020-06-07 13:25:19 · 193 阅读 · 0 评论 -
Android IntentService源码解析
本文主要讲解IntentService的源码实现原创 2020-06-02 14:31:54 · 204 阅读 · 0 评论 -
Android OnClickListener与OnTouchListener原理解析
setOnClickListener 和 setOnTouchListenermButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { ... } });这是OnClickListener常见的使用方法,跳进源码看看。//View.javapublic void setO原创 2020-06-01 19:41:49 · 2117 阅读 · 0 评论 -
Java HashSet的源码解析
之前对ArrayList和HashMap进行了源码解析,现在来看看HashSet的源码。创建Set<String> set = new HashSet<>();这是常用的创建方法,来看看源码。/** * Constructs a new, empty set; the backing <tt>HashMap</tt> instance has * default initial capacity (16) and load fac原创 2020-05-29 12:12:55 · 168 阅读 · 0 评论 -
Java CopyOnWriteArrayList的源码解析
之前分析过ArrayList的源码,发现ArrayList是线程不安全的,现在来解析CopyOnWriteArrayList的源码,看看它是怎么实现线程安全的。创建CopyOnWriteArrayList<String> list = new CopyOnWriteArrayList<>();这是默认创建的方法,来看看源码。 //1 private transient volatile Object[] array; final void setArray(Ob原创 2020-05-29 11:08:51 · 145 阅读 · 0 评论 -
Java ThreadLocal源码解析
标题原创 2020-05-24 18:06:32 · 251 阅读 · 0 评论 -
Android Handler、Looper、HandlerThread及Message源码解析
读前须知 本文是对Android Handler源码的解析,对Handler的基本使用还不了解的朋友可以先快速学习一下Handler再来阅读本文。Handler创建最直接的创建方法就是不带参数new一个Handler对象了。Handler handler = new Handler();//H...原创 2020-03-10 14:52:07 · 316 阅读 · 0 评论 -
Android弹性圆点指示器绘制详解
目录流程简析onMeasure()处理onLayout()处理onDraw()处理初识invalidate()和postInvalidate()添加动画效果基本使用效果流程简析 整个控件的加载运行流程如下图所示:onMeasure()处理 onMea...原创 2020-01-31 16:42:56 · 919 阅读 · 0 评论 -
Android EventBus3源码解析(下)
EventBus创建学会了EventBus的基本操作后,相信大家都注意到大部分时候我们都是在用默认的EventBus来完成任务的,例如下面这样。 EventBus.getDefault().postSticky(new StrMessage("incoming message"));当然,我们也可以对EventBus进行定制。那么EventBus的创建是怎样实现的呢?EventBus的创建...原创 2020-03-04 21:15:15 · 217 阅读 · 0 评论 -
GreenDao源码分析(一)
本文是对GreenDao框架的源码解析,若您对GreenDao的基本使用还不了解,可以先快速学习GreenDao,对GreenDao有了基本了解后在来阅读本文章。GreenDao的初始化为了更好地解析GreenDao的初始化过程,我们先创建一个实体类——Character类。这个类很简单,就只有id和名字。@Entitypublic class Character { @Id(au...原创 2020-03-02 00:38:59 · 332 阅读 · 0 评论 -
Android EventBus3源码解析(中)
前面已经对EventBus订阅者注册注销源码进行了分析,没看过的朋友可以先看:Android EventBus3源码解析(上)原创 2020-02-25 13:42:27 · 277 阅读 · 0 评论 -
Android EventBus3源码解析(上)
读前须知 1.本文是对Android EventBus3的源码解析,若对此框架的基本使用还不了解可先进行快速学习再阅读本文。学习此框架,个人觉得这篇文章写得很好:EventBus使用详解 2.由于篇幅很长,所...原创 2020-02-24 18:34:49 · 166 阅读 · 0 评论 -
Java ArrayList的源码解析(jdk1.8)
创建ArrayList<String> a = new ArrayList<>();这是我们熟悉的创建方法,进去看看。/** * Constructs an empty list with an initial capacity of ten. */ public ArrayList() { this.elementDat...原创 2020-02-20 20:36:25 · 261 阅读 · 0 评论 -
Java HashMap源码解析
创建HashMap要使用HashMap首先就要实例一个对象出来。HashMap<String, Integer> h = new HashMap<>();跳进去看看/** * Constructs an empty <tt>HashMap</tt> with the default initial capacity * ...原创 2020-02-20 17:00:08 · 160 阅读 · 0 评论