Android源码
文章平均质量分 95
SEU_Calvin
慢慢来,才会更快。
展开
-
Android开发——AsyncTask的使用以及源码解析
1.AsyncTask使用介绍AsyncTask封装了Thread和Handler,通过AsyncTask可以很方便地在执行完后台任务后更新UI。如果不太清楚Android的Handler机制,可以查看此篇Android消息机制详解。下面是一个使用AsyncTask的实例,利用网络下载某URL里的字符串,以模拟耗时任务。在下载过程中,会通过进度条对话框向用户展示进度。在完成任务后将字...原创 2016-08-10 21:15:21 · 16854 阅读 · 8 评论 -
Android开发——ListView的复用机制源码解析
0.前言前段时间找工作,看了很多人的面经,不得不说找个工作很麻烦。尤其是Android,岗位的数量比不上前端后Java后台也就算了,问的东西又多又杂,这里就不多列举了,其中有一个印象比较深的问题是关于ListView复用机制的。复用机制谁都会用,但是却不一定能真正讲清楚。因此才有了此文。1. ListView的继承关系和Adapter的由来ListView直接继承自的AbsListVi...原创 2017-10-24 18:28:16 · 2026 阅读 · 0 评论 -
Android开发——简述RxJava框架的实现原理
0.前言看此篇之前最好知道RxJava的使用,关于框架的使用推荐这篇文章,由于RxJava内部实现有点复杂,既然用拆轮子的方式来分析源码比较难啃,不如换种方式,以造轮子的方式,将源码中与性能、兼容性、扩展性有关的代码剔除,留下核心代码带大家揭秘RxJava的实现原理(本文不涉及框架的使用介绍)。1.观察者Subsribler在RxJava里面是一...原创 2017-07-20 17:30:53 · 2265 阅读 · 5 评论 -
Android开发——Protocol Buffer效率之高的原理介绍
0.前言最近的项目里有用到Protocol Buffer,Protocol Buffer是Google公司开发的一种数据描述语言,类似于XML,是一种结构化数据的数据存储格式,可用于数据传输量较大的即时网络通信IM等场景。之所以使用它,是因为PB将信息序列化为二进制的格式,体积缩小了3倍,序列化速度比Json快了20-100倍,也必然会减少网络传输所需的时间。这么强大的的PB,当然要深入理解一下它...原创 2017-07-30 14:22:43 · 2435 阅读 · 4 评论 -
Android开发——View绘制过程源码解析(二)
0. 前言 View的绘制流程从ViewRoot的performTraversals开始,经过measure,layout,draw三个流程,之后就可以在屏幕上看到View了。上一篇已经介绍了View和ViewGroup的measure的源码解析过程,本篇介绍measure后如何获得View的宽和高,以及layout和draw的过程。1. 获得Measure出的宽高Meaure完成以后,可以...原创 2016-10-06 11:45:29 · 14204 阅读 · 5 评论 -
Android开发——View绘制过程源码解析(一)
0.前言View的绘制流程从ViewRoot的performTraversals开始,经过measure,layout,draw三个流程,之后就可以在屏幕上看到View了。其中measure用于测量View的宽和高,layout用于确定View在父容器中放置的位置,draw则用于将View绘制到屏幕上。本文原创,转载请注明出处:SEU_Calvin的CSDN博客。1. MeasureSpec...原创 2016-10-06 10:50:02 · 16103 阅读 · 9 评论 -
Android开发——View滑动冲突解决方案
0. 前言 我们在Android开发——事件分发机制详解中深入学习了事件分发机制,为我们解决Android开发中的滑动冲突问题做了初步准备。针对滑动冲突这里给出两种解决方案:外部拦截法和内部拦截法。1.外部拦截法外部拦截法是指事件都先经过父控件的拦截处理,这里需要注意的是ACTION_DOWN事件父控件中必须返回false,因为如果父控件拦截了DOWN,后续事件也会交给它处理,子控件就无法拿到...原创 2016-09-20 21:37:19 · 9482 阅读 · 0 评论 -
Android开发——Volley源码解析
0. 前言 其实写这篇文章只为一个目的,虽然Volley用起来很爽,但是面试官问你人家内部是怎么实现呢,没看过源码的话,在面试官眼里你和一个拿着一本Volley使用手册的高中生没啥区别。还是那句话说得好,会用一回事,深入理解又是另一回事了。1. Volley源码解析1.1 Volley入口Volley首先获取到的是RequestQueue实例。源码中则直接调用了newRequestQueu...原创 2017-03-03 10:57:57 · 2497 阅读 · 1 评论 -
Android开发——事件分发机制详解
0. 前言 深入学习事件分发机制,是为了解决在Android开发中遇到的滑动冲突问题做准备。事件分发机制描述了用户的手势一系列事件是如何被Android系统传递并消费的。首先对事件分发机制进行概述:如果当一个点击事件发生时,事件最先传递给当前Activity,再传递给Window,接着传递给顶级View,最后按照事件分发机制去分发事件。事件的传递过程可以用以下伪代码进行描述:...原创 2016-09-17 23:33:41 · 17360 阅读 · 0 评论 -
Android开发—— 热修复Tinker源码浅析
热修复这项技术,基本上已经成为Android项目比较重要的模块了。主要因为项目在上线之后,都难免会有各种问题,而依靠发版去修复问题,成本太高了。现在热修复的技术基本上有阿里的AndFix、QZone的方案、美团提出的思想方案以及腾讯的Tinker等。其中AndFix可能接入是最简单的一个(和Tinker命令行接入方式差不多),不过AndFix兼容性有一定的问题,QZone方案对性能会有一定的影响转载 2017-02-28 21:40:38 · 1610 阅读 · 0 评论 -
Android开发——监控造成UI卡顿的原因
0. 前言Android只有主线程才能更新UI。如果界面1秒钟刷新少于60次,即FPS小于60,用户就会产生卡顿感觉。Android使用消息机制进行UI更新的,如果在主线程handler的dispatchMessage方法进行了耗时操作,就会发生UI卡顿。本文原创,转载请注明出处:1. dispatchMessage方法在哪dispatchMessage()是在Looper.loop()里调...原创 2017-05-29 21:13:40 · 7817 阅读 · 8 评论 -
Android开发——Android的消息机制详解
1. 为什么需要Android的消息机制Android规定访问UI只能在主线程中进行。若在子线程中访问UI就会抛出异常。这个验证由ViewRootImpl的checkThread()来完成。为什么不允许在非主线程访问UI呢?这是因为Android的UI控件不是线程安全的。并且UI访问没有锁机制,并发访问会导致控件处于不可预期的状态。那为什么不对UI访问加上锁机制呢?(1)这显然会......原创 2016-08-04 16:06:36 · 15912 阅读 · 1 评论 -
Android开发——Volley的使用详解
0. 前言 Android系统中主要提供了HttpURLConnection和HttpClient进行网络通信,但是如果不对其进行封装就很容易就会写出重复代码。因此一些Android网络通信框架应运而生, Volley就是其中的佼佼者,Volley不仅可以进行HTTP通信,也可以轻松加载网络上的图片。Volley设计的初衷就是非常适合去进行数据量不大,但通信频繁的网络操作,而对于大数据量的网络操......原创 2017-03-03 10:45:13 · 3884 阅读 · 0 评论 -
Android开发——架构组件LiveData源码解析
近期的业务代码中使用到了LiveData,研究了一下发现很好用,因此总结整理出了此篇学习笔记。希望各位多批评指正。1. LiveData概述简单地来说,LiveData就是一个持有数据的类。LiveData中的数据可以被观察者订阅,当数据被修改时通知观察者。观察者包括Fragment、Activity以及Service等。 LiveData能够感知观察者的生命周期。只有在观察者处...原创 2018-08-31 15:11:02 · 20873 阅读 · 0 评论