Android源码分析
yangxi_001
这个作者很懒,什么都没留下…
展开
-
Android Frameworks系列(二) 彻底弄懂startActivity
在Android Frameworks系列(一) startService启动 一文中我们介绍了startService启动的过程,和startService一样,startActivity也是以ActivityManagerService为核心工作的。原理也差不多,不过要比startService复杂,因为Activity的生命周期更多,并且还涉及UI方面的工作。为了分析包括zygote孵化目标转载 2017-09-22 19:32:28 · 825 阅读 · 0 评论 -
ListView回收机制相关分析
所用源码版本为最新的Android 4.4.2(API 19)。更新中…… ListView回收机制相关分析 11. ListView结构关系 12. RecycleBin类解析 32.1 RecycleBin变量 42.2 RecycleBin方法 43. RecycleBin的调转载 2017-07-31 11:24:02 · 385 阅读 · 0 评论 -
Android M应用启动流程分析
以下分析基于6.0.1_r10版本。先看一张大图:1. 桌面的onClick事件(进程:桌面应用的进程)我们暂时忽略Input处理的过程,以桌面的onClick事件被触发为起点。这部分根据Launcher的不同而大同小异。2. ActivityManagerService之startActivity(进程AmS)路径:frameworks/base/se转载 2017-03-10 14:24:34 · 1820 阅读 · 0 评论 -
Android Activity的启动过程
每天看郭神的公众号文章已经成了我的一个习惯,前段时间看到一篇文章,ActivityThread的main()方法究竟做了什么工作?main方法代码并不长,但行行珠玑。我也打开源码去看了main方法,之后还鼠标滑滑滑大致看了ActivityThread,发现了performLaunchActivity方法,这个方法分明就是用来启动Activity的,那么这个performLaunchActi转载 2017-03-06 19:05:14 · 420 阅读 · 0 评论 -
Activity 中mParent 成员变量是如何被赋值的
在查看Activity源码时,会发现有一个成员变量mParent,很多操作如startActivity中都会先去判断mParent,如果不为空,将会走入另外的分支,那么mParent的作用是什么,又是如何被赋值的呢,今天先来分析下mParent的赋值流程。mParent 顾名思义,表示是当前Activity的父Activity,那么在什么样的场景下会存在一个Activity中包含Activit转载 2017-03-06 19:03:46 · 1830 阅读 · 0 评论 -
Android Context简介
1. Context基本概念1.1 Context是什么? 1) Context是一个抽象类,其通用实现在ContextImpl类中。 2) Context:是一个访问application环境全局信息的接口,通过它可以访问application的资源和相关的类,其主要功能如下: • 启动Activity • 启动和停止S转载 2017-02-15 18:08:54 · 459 阅读 · 0 评论 -
Android中的onWindowFocusChanged()方法详解
Android中获取手机屏幕的高度和宽度,我们知道在onCreate方法中获取到的值都是为0的,有人说可以在onClick方法中获取值,这个也是个方法 ,但在onWindowFocusChanged方法中可以直接获取到,而且有的时候场景的需要,就不得不在Activity渲染完成后立马获取值,这时候onWindowFocusChanged()方法就用到实处了,类似的有PopupWindow的显示转载 2016-12-20 18:26:26 · 2247 阅读 · 2 评论 -
关于onPostCreate——Activity彻底运行起来之后的回调
今天偶然间发现了一个貌似很有用处的接口protected void onPostCreate (Bundle savedInstanceState)Since: API Level 1Called when activity start-up is complete (after onStart() and onRestoreInstanceState(Bund转载 2016-12-20 17:49:50 · 1206 阅读 · 0 评论 -
Activitylifecyclecallbacks使用
Application通过ActivityLifecycleCallbacks使用接口提供了一套回调方法,用于让开发者对Activity的生命周期事件进行集中处理。 ActivityLifecycleCallbacks接口回调可以简化监测Activity的生命周期事件,在一个类中作统一处理。 ActivityLifecycleCallbacks使用要求API 14+ (Android 4.0+)。转载 2016-12-20 13:43:01 · 719 阅读 · 0 评论 -
正确处理listview的position
当ListView包含有HeaderView或FooterView时,传入getView或者onItemClick的position是怎样的,这是个值得探讨的问题先列出错误的用法定义:[java] view plain copyprivate MyAdapter mAdapter; /** * 包含转载 2017-07-31 11:52:43 · 2807 阅读 · 0 评论 -
Android ListView初始化简单分析
下面是分析ListView初始化的源码流程分析,主要是ListVIew.onLayout过程与普通视图的layout过程完全不同,避免流程交代不清楚,以下是一个流程的思维导图。 思维导图是顺序是从左向右,从上向下。一、 先看构造函数,上图中1.1就不分析了,主要是读取一些ListView参数,直接来看1.2 ViewGroup构造函数源码转载 2017-07-31 18:18:56 · 1678 阅读 · 1 评论 -
Android自定义View的实现方法,带你一步步深入了解View(四)
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/17357967不知不觉中,带你一步步深入了解View系列的文章已经写到第四篇了,回顾一下,我们一共学习了LayoutInflater的原理分析、视图的绘制流程、视图的状态及重绘等知识,算是把View中很多重要的知识点都涉及到了。如果你还没有看过我前面的几篇文章,建转载 2017-07-27 17:20:30 · 338 阅读 · 0 评论 -
Android视图状态及重绘流程分析,带你一步步深入了解View(三)
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/17045157在前面一篇文章中,我带着大家一起从源码的层面上分析了视图的绘制流程,了解了视图绘制流程中onMeasure、onLayout、onDraw这三个最重要步骤的工作原理,那么今天我们将继续对View进行深入探究,学习一下视图状态以及重绘方面的知识。如果你转载 2017-07-27 17:19:25 · 403 阅读 · 0 评论 -
Android视图绘制流程完全解析,带你一步步深入了解View(二)
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/16330267在上一篇文章中,我带着大家一起剖析了一下LayoutInflater的工作原理,可以算是对View进行深入了解的第一步吧。那么本篇文章中,我们将继续对View进行深入探究,看一看它的绘制流程到底是什么样的。如果你还没有看过我的上一篇文章,可以先去阅读转载 2017-07-27 17:18:10 · 385 阅读 · 0 评论 -
Android LayoutInflater原理分析,带你一步步深入了解View(一)
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/12921889有段时间没写博客了,感觉都有些生疏了呢。最近繁忙的工作终于告一段落,又有时间写文章了,接下来还会继续坚持每一周篇的节奏。有不少朋友跟我反应,都希望我可以写一篇关于View的文章,讲一讲View的工作原理以及自定义View的方法。没转载 2017-07-27 17:17:04 · 258 阅读 · 0 评论 -
Android ListView工作原理完全解析,带你从源码的角度彻底理解
转自:http://blog.csdn.net/guolin_blog/article/details/44996879在Android所有常用的原生控件当中,用法最复杂的应该就是ListView了,它专门用于处理那种内容元素很多,手机屏幕无法展示出所有内容的情况。ListView可以使用列表的形式来展示内容,超出屏幕部分的内容只需要通过手指滑动就可以移动到屏幕内了。转载 2017-07-31 11:31:07 · 268 阅读 · 0 评论 -
安卓5.1源码解析 : RecyclerView解析从绘制流程,ViewHolder复用机制,LayoutManger,ItemAnimator等流程全面讲解
最近一直在研究安卓中几个常用控件的源码,希望能通过学习源码学习到google大牛在封装一些复杂view的思想,为以后自己造轮子提供更好的思路.RecyclerView是一个用户可以全面定制的组件,本文将全面分析RecyclerView的各种机制,包括viewholder复用机制,LayoutManager布局机制,ItemAnimatoritem动画等RecyclerView暴露给使用者的转载 2017-08-01 17:39:11 · 1346 阅读 · 0 评论 -
安卓5.1源码解析 : ListView解析 从绘制,刷新机制到Item的回收机制全面讲解
最近一直在研究关于安卓中常用控件的源码实现,也参考了不少文章,希望通过自己的总结加深一下记忆,我会从一个view的绘制流程去分析这个控件作为安卓中最常用的控件ListView,我觉很很有必要学习一下Google的大牛是如何实现这种比较复杂的控件,包括ListVIew的绘制流程,ListView的缓存机制,以及封装思想,对今后自己能早出更好的轮子有所帮助.注 : 所有的源码都是来自安转载 2017-08-01 17:37:55 · 425 阅读 · 0 评论 -
源码解析ListView中的RecycleBin机制
在自定义Adapter时,我们常常会重写Adapter的getView方法,该方法的签名如下所示:public abstract View getView (int position, View convertView, ViewGroup parent) 1此处会传入一个convertView变量,它的值有可能是null,也有可能不是null,如果不为null,我们就可以转载 2017-08-01 10:47:01 · 376 阅读 · 0 评论 -
Android View 绘制流程(Draw) 完全解析
前言前几篇文章,笔者分别讲述了DecorView,measure,layout流程等,接下来将详细分析三大工作流程的最后一个流程——绘制流程。测量流程决定了View的大小,布局流程决定了View的位置,那么绘制流程将决定View的样子,一个View该显示什么由绘制流程完成。以下源码均取自Android API 21。从performDraw说起前面几篇文章提到,三大工作转载 2017-01-06 18:54:31 · 480 阅读 · 0 评论 -
Android View 布局流程(Layout)完全解析
前言上一篇文章,笔者详细讲述了View三大工作流程的第一个,Measure流程,如果对测量流程还不熟悉的读者可以参考一下上一篇文章。测量流程主要是对View树进行测量,获取每一个View的测量宽高,那么有了测量宽高,就是要进行布局流程了,布局流程相对测量流程来说简单许多。那么我们开始对layout流程进行详细的解析。ViewGroup的布局流程上一篇文章提到,三大流程始于V转载 2017-01-06 18:53:08 · 443 阅读 · 0 评论 -
Android View 测量流程(Measure)完全解析
前言上一篇文章,笔者主要讲述了DecorView以及ViewRootImpl相关的作用,这里回顾一下上一章所说的内容:DecorView是视图的顶级View,我们添加的布局文件是它的一个子布局,而ViewRootImpl则负责渲染视图,它调用了一个performTraveals方法使得ViewTree开始三大工作流程,然后使得View展现在我们面前。本篇文章主要内容是:详细讲述View的测转载 2017-01-06 18:51:29 · 366 阅读 · 0 评论 -
你真的了解AsyncTask?
虽说现在做网络请求有了Volley全家桶和OkHttp这样好用的库,但是在处理其他后台任务以及与UI交互上,还是需要用到AsyncTask。但是你真的了解AsyncTask吗?AsyncTask的实现几经修改,因此在不同版本的android系统上表现各异;我相信,任何一个用户量上千万的产品绝对不会在代码里面使用系统原生的AsynTask,因为它蛋疼的兼容性以及极高的崩溃率实在让人不敢恭维。转载 2016-12-26 18:33:53 · 462 阅读 · 1 评论 -
Android AsyncTask完全解析,带你从源码的角度彻底理解
转自:http://blog.csdn.net/guolin_blog/article/details/11711405我们都知道,Android UI是线程不安全的,如果想要在子线程里进行UI操作,就需要借助Android的异步消息处理机制。之前我也写过了一篇文章从源码层面分析了Android的异步消息处理机制,感兴趣的朋友可以参考 Android Handler、Mes转载 2016-12-26 18:23:38 · 438 阅读 · 0 评论 -
Handler post(Runnable runnable)和sendMessage(Message msg)的区别比较
先上Handler的源码看一下:[java] view plain copy/** * Default constructor associates this handler with the {@link Looper} for the * current thread. * * If t原创 2016-12-23 18:32:13 · 2445 阅读 · 0 评论 -
Android 异步消息处理机制 让你深入理解 Looper、Handler、Message三者关系
很多人面试肯定都被问到过,请问Android中的Looper , Handler , Message有什么关系?本篇博客目的首先为大家从源码角度介绍3者关系,然后给出一个容易记忆的结论。1、 概述Handler 、 Looper 、Message 这三者都与Android异步消息处理线程相关的概念。那么什么叫异步消息处理线程呢?异步消息处理线程启动后会进入一个无限的循环体之中,每循转载 2016-12-23 14:16:46 · 533 阅读 · 0 评论 -
Android View总结
Android 中包括两类基类:View 和 ViewGroupView 是 Android 中重要的类,它有众多的重要的方法,比如 onMeasure,onLayout,onTouchEvent等 ViewGroup 是容器,可以包含多个View,比如典型的 LinearLayout , Framelayout等Android 窗口组成Activity └── Phon转载 2016-08-24 11:36:47 · 382 阅读 · 0 评论 -
Android的Message Pool是个什么鬼——源码角度分析 .
转自:http://blog.csdn.net/xplee0576/article/details/46875555Android中,我们在线程之间通信传递通常采用Android的消息机制,而这机制传递的正是Message。通常,我们使用Message.obtain()和Handler.obtainMessage()从Message Pool中获取Message,避免直接构造Messa转载 2016-03-04 19:31:33 · 555 阅读 · 0 评论 -
Android消息机制不完全解析(下) .
转自:http://blog.csdn.net/a220315410/article/details/10444171首先,看看在/frameworks/base/core/jni/android_os_MessageQueue.cpp文件中看看android.os.MessageQueue类中的四个原生函数的实现:[java] view plain copy转载 2016-03-04 19:29:30 · 769 阅读 · 0 评论 -
Android消息机制不完全解析(上) .
转自:http://blog.csdn.net/a220315410/article/details/9857225?utm_source=tuicool&utm_medium=referralHandler和Message是Android开发者常用的两个API,我一直对于它的内部实现比较好奇,所以用空闲的时间,阅读了一下他们的源码。 相关的Java C转载 2016-03-04 19:26:54 · 500 阅读 · 0 评论 -
Android中巧妙的位运算(Android源码中常见的一些flag的运算的理解)
Android在编码的时候经常使用到位运算,这里以Intent的Flags为例。(查看Intent说明文档)首先通过查看Flags的值,都是16进制数值代表,且只使用一位并只为1|2|4|8 (与2的次方相关),例举几个源码中对应的值: public static final int FLAG_ACTIVITY_NEW_TASK = 0x10000000转载 2017-01-04 14:29:34 · 2461 阅读 · 0 评论 -
Android源码解析Handler系列第(三)篇---深入了解Android的消息机制
Android的消息机制我觉得是每一个弄Android开发的人都要弄懂得问题,也有很多人对它进行研究,Android的消息机制的重要性不强调,但是觉得自己对Android的消息机制了解不深刻,所以决定深入源码,写下三篇博客以记之。因为Message全局池和ThreadLocal对Android的消息机制理解很重要,附上前两篇的博客地址。Android源码解析Handler系列第(一)篇 ---转载 2016-12-29 14:18:49 · 383 阅读 · 0 评论 -
Android View源码解读:浅谈DecorView与ViewRootImpl
前言对于Android开发者来说,View无疑是开发中经常接触的,包括它的事件分发机制、测量、布局、绘制流程等,如果要自定义一个View,那么应该对以上流程有所了解、研究。本系列文章将会为大家带来View的工作流程详细解析。在深入接触View的测量、布局、绘制这三个流程之前,我们从Activity入手,看看从Activity创建后到View的正式工作之前,所要经历的步骤。以下源码均取自An转载 2017-01-06 18:50:05 · 278 阅读 · 0 评论 -
ANDROID自定义视图——onMeasure,MeasureSpec源码 流程 思路详解
简介:在自定义view的时候,其实很简单,只需要知道3步骤:1.测量——onMeasure():决定View的大小2.布局——onLayout():决定View在ViewGroup中的位置3.绘制——onDraw():如何绘制这个View。而第3步的onDraw系统已经封装的很好了,基本不用我们来操心,只需要专注到1,2两个步骤就中好了。而这篇文转载 2017-01-06 17:19:32 · 373 阅读 · 0 评论 -
Android消息机制Message消息池
这篇文章主要说下Android在实现Message类的时候使用的一个所谓的消息池的问题。我们在使用Android的消息循环时,一般按照下面的方式使用,为了使线程具有消息循环如下://实现自己的Handler类,重写handlerMessage()方法[java] view plain copyprivate class MyHandl转载 2016-12-29 16:02:47 · 595 阅读 · 0 评论 -
Android中的Message类以及Java对象池的实现
在Android的android.os.Message类的文档中有这么一句话:While the constructor of Message is public, the best way to get one of these is to call Message.obtain() or one of the Handler.obtainMessage() methods, which转载 2016-12-29 16:00:28 · 726 阅读 · 0 评论 -
Android源码分析之Message
在Android的开发中,我们经常用到Handler.postXXX方法,或者View.postXXX方法,用来在下一次looper到来时执行。我是那样的人,什么事情最好能够知道下内部实现机理是什么,否则我在用它的时候可能会觉得不爽,或者说不自然,不太愿意去用。典型例子就是我始终不太愿意用Android引入的SparseArray,而是一直坚持Java的HashMap,直到我自己读转载 2016-12-29 14:50:53 · 354 阅读 · 0 评论 -
Android源码解析Handler系列第(一)篇 --- Message全局池
1、UI不能在子线程中更新是个伪命题我们常说UI需要在主线程中进行更新,子线程就不能更新UI吗?不是,我们并不是说不能在子线程中更新UI,而是说UI必须要在它的创建线程中进行更新,比如下面一段代码在子线程更新UI就不会报错。 new Thread(new Runnable() { @Override public void run()转载 2016-12-29 14:17:42 · 460 阅读 · 0 评论 -
Android源码解析Handler系列第(五)篇 ---HandlerThread你用过吗?
Handler这个系列总共有5篇,这是最后一篇了。前面三篇博客,我们从源码的层面将Handler消息机制梳理了一遍,第四篇站在源码层之上回顾以前学习时候困惑的一些问题。OK,开始飙车了,学习HandlerThread,如果你还没有看过我之前的四篇文章,建议去了解,只有深入了解的东西,才能被记住。Android源码解析Handler系列第(一)篇 --- Message全局池Android源转载 2016-12-29 14:20:41 · 338 阅读 · 0 评论 -
Android源码解析Handler系列第(四)篇 --- 打破Handler那些困惑事儿
Handler这个总共有4篇,这是最后一篇,前面三篇博客,我们从源码的层面将Handler消息机制梳理了一遍,现在回头再看当时作为小白使用Hander所遇到的一些问题,显然,这些问题基本都可以做一个解释了。Android源码解析Handler系列第(一)篇 --- Message全局池Android源码解析Handler系列第(二)篇 --- ThreadLocal详解Android源转载 2016-12-29 14:19:27 · 344 阅读 · 0 评论