Android 源码篇
一口仨馍
拥抱改变,勇往直前。
展开
-
Android SystemServer启动流程源码解析
简介Android系统中各个进程的先后顺序为:init进程 –-> Zygote进程 –> SystemServer进程 –>应用进程其中Zygote进程由init进程启动,SystemServer进程和应用进程由Zygote进程启动。本文依据6.0源码,主要分析SystemServer进程的启动流程。注意,是启动流程,不是启动过程。启动过程的解析可以移步我的另一片博文Zygote启动流程源码解原创 2016-08-08 09:27:52 · 4205 阅读 · 9 评论 -
Android 顶级视图DecorView的前世今生
在Activity的启动过程中会执行ActivityThread#performLaunchActivity方法,其中调用Activity#attach。在attach()方法中实例化Activity持有的mWindow属性为Window的唯一实现类PhoneWindow。原创 2017-04-27 15:06:07 · 8829 阅读 · 0 评论 -
Android Launcher启动应用程序流程源码解析
带着问题看源码点击桌面Launcher图标后做了哪些工作?应用程序什么时候被创建的?Application和MainActivity的onCreate()方法什么时候被调用的?概述在Android系统中,启动四大组件中的任何一个都可以启动应用程序。但绝大部分时候我们是通过点击Launcher图标启动应用程序。本文依据Android6.0源码,从点击Launcher图标,直至解析到MainAc原创 2016-08-15 13:19:06 · 7001 阅读 · 3 评论 -
Android 从源码的角度带你完全解析AsyncTask
AsyncTask()解析 public AsyncTask() { mWorker = new WorkerRunnable<Params, Result>() { public Result call() throws Exception { mTaskInvoked.set(true);原创 2017-01-19 10:53:04 · 1475 阅读 · 1 评论 -
Android setContentView()源码解析
前言在Activity中一般第一句就是调用setContentView(R.layout.XXX),但这其中系统做了那些工作?我们知道,在ClassLoader装载了MainActivity之后,首先创建了Application,之后依次调用Application对象的onAttach和onCreate()方法。然后顺序调用第一个Activity的onAttach和onCreate()方法原创 2016-08-22 09:05:00 · 3002 阅读 · 0 评论 -
Android 使用WindowManager实现悬浮窗及源码解析
本文已授权微信公众号《鸿洋》原创首发,转载请务必注明出处。一个Activity、一个Service和两个布局文件。布局十分简单,这里就不贴了,大概描述下。activity_main.xml中俩按钮,layout_window.xml中一个TextView。ok,首先看下MainActivity。MainActivity中只有俩按钮,点击启动WindowService,点击停止WindowService。原创 2016-10-24 09:18:08 · 14206 阅读 · 20 评论 -
Android Activity启动流程源码解析
在 Android Launcher启动应用程序流程源码解析一文中从点击应用程序图标startActivity()开始,一直讲解到Application和MainActivity的onCreate()方法被调用。中间流程有些高能,高能部分是两篇博文共有的地方,没办法绕开。本文主要讲述从Activity#onCreate()到Activity#onResume()的流程。想追本溯源的同学建议先阅读原创 2016-10-14 15:20:21 · 4020 阅读 · 0 评论 -
Android Volley核心源码解析
本文已授权微信公众号《非著名程序员》原创首发,转载请务必注明出处。1、特别适合数据量小,通信频繁的网络操作。2、扩展性强。Volley 中大多是基于接口的设计,可配置性强。 3、一定程度符合 Http 规范4、默认 Android2.3 及以上基于 HttpURLConnection,2.3 以下基于 HttpClient 实现5、提供简便的图片加载工具,总之volley就是很牛逼啦!原创 2016-03-15 16:40:51 · 5343 阅读 · 5 评论 -
Android EventBus3.0使用及源码解析
本文已授权微信公众号《非著名程序员》原创首发,转载请务必注明出处。# EventBus3.0简介`EventBus`是greenrobot出品的一个用于Android中事件发布/订阅的库。以前传递对象可能通过接口、广播、文件等等,尤其像同一个`Activity`两个`Fragment`之间采用接口传递对象,十分的麻烦,而且耦合度较高。使用`EventBus`之后,这些将不再是问题。原创 2016-07-10 18:49:00 · 8074 阅读 · 0 评论 -
Android Zygote启动流程源码解析
本文已授权微信公众号《鸿洋》原创首发,转载请务必注明出处。Zygote进程是Android和Java世界的开创者。在Android系统中,所有的应用进程和SystemServer进程都是由Zygote进程fork而来。其重要性由此可见一斑。虽然Zygote进程相当于Android系统的根进程,但是事实上它也是由Linux系统的init进程启动的。原创 2016-07-29 08:57:38 · 5823 阅读 · 8 评论 -
Android 高级自定义Toast及源码解析
本文已授权微信公众号《非著名程序员》原创首发,转载请务必注明出处。Toast概述Toast的作用不需要和用户交互的提示框。更多参见官网:https://developer.android.com/guide/topics/ui/notifiers/toasts.htmlToast的简单使用原创 2016-10-08 09:27:41 · 7995 阅读 · 7 评论 -
Android XML布局文件解析过程源码解析
`mLayoutInflater.inflate(layoutResID, mContentParent)`。这行代码的作用是将我们的activity_main.xml填充到mContentParent中去。详见:[setContentView源码解析]。那么,这行代码怎么就将xml文件转换成了View或者ViewGroup了呢?原创 2016-08-22 09:47:52 · 7605 阅读 · 1 评论 -
ThreadLocal源码解析
ThreadLocal不是一个具体的线程。它是一个线程内部的数据存储类,通过它可以再指定的线程中存储数据,数据存储以后,只有在指定线程中可以获取到存储的数据,对于其它线程来说则无法获取到数据。 ThreadLocal之所以有这么神奇的效果,是因为不同线程访问同一个ThreadLocal的get方法,ThreadLocal内部会将各自线程的引用当做table数组的一个值存在,然后从数组中根据当原创 2015-11-23 20:47:15 · 3806 阅读 · 0 评论 -
Handler、Message、MessageQueue、Looper调用过程源码浅析
在看此文章之前建议不太了解ThreadLocal的读者先了解下上一篇文章《ThreadLocal源码浅析》,在后文中会有所涉及。 先从Hanlder说起吧,Handler的工作包含发送和接收消息,主要作用是讲一个任务切换到某个指定的线程中去执行。发送一条消息的典型过程如下public final boolean sendMessage (Message msg ) {原创 2015-11-24 19:14:53 · 3852 阅读 · 4 评论 -
Android6.0Framework源码解析系列[目录]
看前人在很久以前就达到我现在远远不及的高度,这让我觉得有些无力。也正是他们趟过的坑能指引我即将前进的路。所以我很庆幸。我庆幸有人指引,我庆幸我在前进。本着向大牛学习以及知其然知其所以然的精神,准备有目的、系统性的Read The Fucking Source Code。既当作自己的笔记,也希望可以帮助部分后来者。这是一篇已经阅读的Anroid6.0中Framework源码目录...原创 2016-08-10 18:46:44 · 9036 阅读 · 5 评论