Android源码解析
文章平均质量分 94
Looper景
只有能在今天的风雨中翩翩起舞,才能期待明天的幸福生活
展开
-
Android源码解析Window系列第(二)篇---Dialog加载绘制流程
上一篇分析了一下Activity的Window创建过程和Window与Activity是如何关联到一起的,通过上一篇,我们对Window有了基本的认识。这一篇分享一下我对Dialog加载绘制流程的理解。首先创建一个Dialog,回顾下创建Dialog的流程。public class MainActivity extends Activity { AlertDialog alertDialo原创 2016-12-12 22:34:32 · 679 阅读 · 0 评论 -
Android源码解析四大组件系列(八)---广播几个问题的深入理解
接上篇文章,这篇文章主要是总结前面知识,并且了解一些细节问题,加深对广播机制的理解,比如有播有序是怎么保证有序的?广播拦截机制是怎么实现的?广播发送超时了是怎么处理的?registerReceiver方法发返回值有什么用?粘性广播等等。Android源码解析四大组件系列(五)—广播的注册过程Android源码解析四大组件系列(六)—广播的处理过程Android源码解析四大组件系列(七)—广播的发送过原创 2017-07-24 15:29:58 · 870 阅读 · 1 评论 -
Android源码解析四大组件系列(七)---广播的发送过程
本篇文章的目录1、广播数据结构分析2、线程的切换3、processNextBroadcast分析3.1、处理并行广播3.2、处理Pending广播3.3、处理有序广播3.4、获取下一条广播3.5、检查是否是动态广播3.6、检查是否是静态广播3.7、启动进程,处理未发送的静态广播4、动态广播receiver处理5、静态广播receiver处理先了解一下广播的数据结构,然后在分析广播的处原创 2017-07-24 11:54:01 · 1142 阅读 · 0 评论 -
Android源码解析四大组件系列(六)---广播的处理过程
这篇文章紧接着上篇分析广播的发送过程,发送广播都是调用ContextImpl的接口去实现的,总共有二十多个,最终都是调用到AMS的broadcastIntent。主要分成下面九小节来说明。 1、设置Flag 2、检查BroadcastOptions 3、当前是否有权力发出广播 4、处理系统相关广播 5、处理粘性广播 6、registeredReceivers和receiver原创 2017-07-24 11:48:33 · 1175 阅读 · 0 评论 -
Android源码解析四大组件系列(五)---广播的注册过程
广播这个篇幅打算用四篇文章来写,分别为广播注册、广播处理、广播的发送,广播深入细节理解,如果都写到一篇文章会比较长,所以拆分成四篇来写。第一篇 Android源码解析—广播的注册过程 第二篇 Android源码解析—广播的处理过程 第三篇 Android源码解析—广播的发送过程 第四篇 Android源码解析—广播深入细节理解想收到广播(Broadcast),必须先要注原创 2017-07-20 19:17:29 · 1288 阅读 · 0 评论 -
Android源码解析四大组件系列(二)---Activity启动过程的总体把握
之前写过Service的启动过程,相对来说Activity的启动过程比Service的启动过程更为复杂,其一Activity的生命周期方法比Service多,其二Activity具有启动模式和返回栈。写本文的目的在于更清晰的梳理Activity的启动过程,加强自己的内功修炼,博客粉丝日益增多,力在以最简单的方式让大家理解,跟大家一起学习。Activity的启动过程计划用三篇博客来写;第一篇(本文)原创 2017-03-08 15:00:36 · 907 阅读 · 0 评论 -
Android源码解析四大组件系列(四)---Activity启动详细流程
在上一篇博客http://www.jianshu.com/p/98fa08ee1bfb,我们起码知道了Zygote是怎么启动SystemServer进程的,AMS是怎么注册的,启动的,启动之后通过Socket怎样与Zygote进程通信的,而Zygote进程收到AMS的请求之后,是怎么fork进程,将ActivityThread的main方法是执行起来的。这些内容在我的前两篇博客都梳理过,建议阅读一下原创 2017-03-08 14:53:38 · 1174 阅读 · 0 评论 -
Android源码解析四大组件系列(三)---Activity启动过程之ActivityThread是如何运行起来的
这篇文章,深入源码,分析Launcher进程向SystemServer进程发起startActivity请求,SystemServer进程在向zygote进程发起请求,最后孵化出应用进程(我们的APP进程)的这一过程,为什么要分析这个呢,在APP只有一个进程的情况下,通常以冷启动的方式打开APP的一个Activity与热启动的方式打开一个Activity的流程是不一样的,我认为Activity的启动原创 2017-03-08 14:18:23 · 1630 阅读 · 0 评论 -
Android源码解析Window系列第(三)篇---WindowManager基本原理
前面的两篇博客,总结了一下Window的基本知识,我们知道Window是一个抽象的概念,每一个Window都对应着一个View,Window的呈现方式是View,View要依赖Window,View和Window最终要关联在一起。Activity在android中所起的作用主要是处理一些逻辑问题,比如生命周期的管理、建立窗口等。Window的层次关系就如下面画的一样。详细参考前面两篇博客。 And原创 2016-12-13 21:47:26 · 2380 阅读 · 0 评论 -
Android源码解析Handler系列第(一)篇 --- Message全局池
1、UI不能在子线程中更新是个伪命题我们常说UI需要在主线程中进行更新,子线程就不能更新UI吗?不是,我们并不是说不能在子线程中更新UI,而是说UI必须要在它的创建线程中进行更新,比如下面一段代码在子线程更新UI就不会报错。 new Thread(new Runnable() { @Override public void run() {原创 2016-12-05 10:05:30 · 1443 阅读 · 3 评论 -
Android源码解析四大组件系列(一)---Service的启动过程分析
这几天分析了一下Activity的启动过程和Service的启动过程,于是乎,今天写一下Service是如何启动的。给我的感觉是这些启动过程并不复杂,千万不要被一坨一坨的代码吓住了,虽然弯弯绕绕不少,重载函数一个接着一个,就向走迷宫一样,但只要抓住主线阅读,很快就能找到出口。强调一下阅读系统源码,起码要对进程间通信要了解,对binder机制非常非常清楚,binder就是指南针,要不然你会晕头转向。强原创 2017-01-05 00:27:02 · 1265 阅读 · 0 评论 -
Android源码解析RPC系列(一)---Binder原理
看了几天的Binder,决定有必要写一篇博客,记录一下学习成果,Binder是Android中比较综合的一块知识了,目前的理解只限于JAVA层。首先Binder是干嘛用的?不用说,跨进程通信全靠它,操作系统的不同进程之间,数据不共享,对于每个进程来说,它都天真地以为自己独享了整个系统,完全不知道其他进程的存在,进程之间需要通信需要某种系统机制才能完成,在Android整个系统架构中,采用了大量的C/原创 2017-01-01 21:55:07 · 1267 阅读 · 1 评论 -
Android源码解析Window系列第(一)篇---Window的基本认识和Activity的Window创建过程
您可能听说过View ,ViewManager,Window,PhoneWindow,WindowManager,WindowManagerService,可是你知道这几个类是什么关系,干嘛用的。概括的来说,View是放在Window中的,Window是一个抽象类,它的具体实现是PhoneWindow,PhoneWindow还有个内部类DecorView,WindowManager是一个interf原创 2016-12-12 09:29:59 · 2200 阅读 · 0 评论 -
Android源码解析系列第(三)篇---深入了解Android的消息机制
Android的消息机制我觉得是每一个弄Android开发的人都要弄懂得问题,也有很多人对它进行研究,Android的消息机制的重要性不强调,但是觉得自己对Android的消息机制了解不深刻,所以决定深入源码,写下三篇博客以记之。因为Message全局池和ThreadLocal对Android的消息机制理解很重要,附上前两篇的博客地址。 Android源码解析Handler系列第(一)篇 — Me原创 2016-12-05 10:09:21 · 635 阅读 · 0 评论 -
Android源码解析Handler系列第(二)篇--- ThreadLocal详解
在上篇文章Android源码解析Handler系列第(一)篇说了Message的内部维持的全局池机制。这一篇仍然是准备知识,因为在Handler中有ThreadLocal的身影,大家知道,Handler创建的时候会采用当前线程的Looper来构造消息循环系统,那么Handler内部如何获取到当前线程的Looper呢?这就要使用ThreadLocal了,ThreadLocal可以在不同的线程之中互不干原创 2016-12-05 10:07:33 · 632 阅读 · 0 评论 -
Android源码解析Handler系列第(四)篇 --- 打破Handler那些困惑事儿
Handler这个总共有4篇,这是最后一篇,前面三篇博客,我们从源码的层面将Handler消息机制梳理了一遍,现在回头再看当时作为小白使用Hander所遇到的一些问题,显然,这些问题基本都可以做一个解释了。Android源码解析Handler系列第(一)篇 — Message全局池 Android源码解析Handler系列第(二)篇 — ThreadLocal详解 Android源码解析Hand原创 2016-12-05 19:43:38 · 589 阅读 · 0 评论 -
Android源码解析Handler系列第(五)篇 ---HandlerThread你用过吗?
Handler这个系列总共有5篇,这是最后一篇了。前面三篇博客,我们从源码的层面将Handler消息机制梳理了一遍,第四篇站在源码层之上回顾以前学习时候困惑的一些问题。OK,开始飙车了,学习HandlerThread,如果你还没有看过我之前的四篇文章,建议去了解,只有深入了解的东西,才能被记住。 Android源码解析Handler系列第(一)篇 — Message全局池 Android源码解析原创 2016-12-08 20:28:58 · 1037 阅读 · 0 评论 -
Android窗口系统第三篇---WindowManagerService中窗口的组织方式
Android窗口系统第一篇—Window的类型与Z-Order确定 Android窗口系统第二篇—Window的添加过程上面文章梳理了一个窗口的添加过程,系统中有很多应用,每个应用有多个Activity,一个Activity上有一个Window或者多个Window,WindowManagerService是怎么管理的?先adb shell dumpsys activity查看一下Activity原创 2017-11-08 19:18:45 · 3321 阅读 · 0 评论