源码分析
Kiven_Android
生活不是眼前的苟且, 还有诗和远方
展开
-
LayoutInflater源码分析之Inflate
今天在自己使用RecyclerView的时候出现了一些小Bug,然后自己就编写了一些测试代码进行分析,这里就拿出来跟大家分享一下。问题的出现我会在代码中标识出:MainActivity.java:public class MainActivity extends AppCompatActivity { private RecyclerView recyclerView原创 2016-11-21 12:57:00 · 424 阅读 · 0 评论 -
Android源码中的单例模式
在Android系统中,我们经常需要去通过context获取一些系统级别的服务。比如WindowManagerService、ActivityManagerService等。最常用的莫过于LayoutInflater类,这些服务都是以单例的方式注入到系统当中的。我们还是来以LayoutInflater为例。 public static LayoutInflater from(Con原创 2016-11-22 16:40:51 · 755 阅读 · 0 评论 -
LayoutInflate源码分析之如何解析视图树
前言:在前面介绍完LayooutInflater的inflate方法后,这次我们着重来分析下inflate是如何去加载布局的。我们之前讲过系统获取LayoutInflater的时候,会通过ServiceFetcher的createService方法进行注入到容器ReceiverRestrictedContext类地址:https://android.googlesource.com原创 2016-11-23 12:58:40 · 430 阅读 · 0 评论 -
Android源码中的AlertDialog分析
前言:在Android源码中最常用到的Builder模式,就是AlertDialog.Builder,使用该Builder来构建复杂的AlertDialog对象。首先来看使用方法: AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("Title").setMe原创 2016-11-24 17:30:51 · 1072 阅读 · 0 评论 -
Android应用setContentView与LayoutInflater加载解析机制源码分析(超级棒!)
【工匠若水 http://blog.csdn.net/yanbober 转载烦请注明出处,尊重分享成果】1 背景其实之所以要说这个话题有几个原因:理解xml等控件是咋被显示的原理,通常大家写代码都是直接在onCreate里setContentView就完事,没怎么关注其实现原理。前面分析《Android触摸屏事件派发机制详解与源码分析三转载 2016-12-08 13:51:52 · 515 阅读 · 0 评论 -
Android应用层View绘制流程与源码分析(棒的不行)
【工匠若水 http://blog.csdn.net/yanbober 转载烦请注明出处,尊重分享成果】1 背景还记得前面《Android应用setContentView与LayoutInflater加载解析机制源码分析》这篇文章吗?我们有分析到Activity中界面加载显示的基本流程原理,记不记得最终分析结果就是下面的关系:看见没有,如上图中id为content的内容就是整个Vi转载 2016-12-08 13:59:40 · 634 阅读 · 0 评论 -
Android5.0版本与Android4.4版本之视图结构差异图
最近在分析Android系统的UI绘制流程,网上有很多写的好的博客,在本人博客列表中也能找到。在分析的过程中发现,DecorView是一个继承FrameLayout的顶级布局容器,它所包含的是整个手机能显示的视图界面。但是接下来发现在各个版本的手机系统上,初始视图树是存在着差异的,但是总体的思想依然没变,依然是DecorView-->LinearLayout-->FrameLayout原创 2016-12-08 14:47:52 · 752 阅读 · 0 评论 -
Looper、MessageQueue、Handler机制简要分析
前言: 在Android开发中Handler、Message是非常常见的,常用于定时执行任务、主线程更新UI等操作。之前自己一直都是在停留在使用上,这次有空翻翻源码自己了解下相关原理,对自己也会有一定的提高。 首先整个应用的入口函数是ActivityThread的main函数,UI线程的消息循环也是在这个方法中创建的:public static void main(Stri原创 2017-04-16 23:59:05 · 393 阅读 · 0 评论 -
实现自己的Handler、Looper、MessageQueue
前言 最近研究了Android中的消息机制的源码,理解了内部的调用过程以及内部原理后,试着用java实现了类似于Android的消息机制。 Handler.java:public class Handler { private MessageQueue mQueue; private Looper mLooper; //Handler的初始化,在主线程完成 public Hand原创 2017-04-26 10:49:06 · 431 阅读 · 0 评论