android源码分析
文章平均质量分 96
>进阶的程序员>
一个处于探索期的程序员。
展开
-
Android源码解析--ContentProvider的创建及启动流程
分析源码:Android 8.0本文主要分析调用getContentResolver方法以后,获取到ContentProvider的流程,或者说getContentResolver方法以后,和ContentProvider建立联系的流程。Provider的启动及创建流程在前面一篇博客 ContentResolver与ContentProvider的搭配使用 讲到了ContentResolv...原创 2019-10-20 22:18:57 · 958 阅读 · 0 评论 -
android分析ContentProvider onCreate()在 Application onCreate()之前执行
原文作者:Brandon777链接:https://juejin.im/post/59c24b256fb9a00a496e5ec4来源:掘金bind Application的方法handleBindApplication(AppBindData data)内部代码块try {4524 // If the app is being launched for ful...转载 2019-10-13 20:14:57 · 5772 阅读 · 0 评论 -
Android源码解析--dropbox日志:DropBoxManagerService(DBMS)服务详解
DropBoxManagerService简介DropBoxManagerService(简称DBMS)是日志相关的服务,用于生成与管理 系统运行时的一些日志文件。日志文件大多记录的是系统或某个应用出错的日志信息。该**日志输出在dropbox目录下**。它在SystemServer启动以后被添加到ServiceManager中: ServiceManager.addService(Con...原创 2019-03-31 14:19:42 · 2312 阅读 · 0 评论 -
Android源码解析--DiskStatsService(存储管理)服务详解
DiskStatsService和DeviceStorageMonitorService两个服务都和系统内部存储管理、监控有关。这里先讲DiskStatsServiceDiskStatsServiceDiskStatsService很简单,代码只有100行左右,它直接继承自Binder,却没有实现Binder的任何接口:/** * This service exists only as ...原创 2019-03-31 22:31:17 · 1221 阅读 · 0 评论 -
Android源码解析--ClipBoardService(粘贴板)服务详解
ClipBoardService是Android的粘贴板服务,我们的复制粘贴都需要通过这个服务来完成。1、与ClipBoardService相关的类如下图所示, ClipBoardService服务核心的几个类:android.content.ClipBoardManager: 继承自android.text.ClipBoardManager, 这是一个兼容性的设计, 早期android只...原创 2019-04-06 22:13:57 · 4072 阅读 · 0 评论 -
Android源码解析--DeviceStorageManagerService(DeviceStorageMonitorService)服务详解
DiskStatsService和DeviceStorageMonitorService两个服务都和系统内部存储管理、监控有关。这一篇继续学习DeviceStorageMonitorService(以下简称DSMS)。DeviceStorageMonitorService和DeviceStorageManagerService是一个东西,只是在5.0以后,名字改为了DeviceStorageM...原创 2019-04-01 23:03:15 · 2774 阅读 · 0 评论 -
Android源码解析--ActivityManagerService详解(一):从开机启动的角度解析AMS
ActivityManagerService是Android系统中一个特别重要的系统服务,也是我们上层APP打交道最多的系统服务之一。ActivityManagerService(以下简称AMS) 主要负责四大组件的启动、切换、调度以及应用进程的管理和调度工作。所有的APP应用都需要与AMS打交道。本文将从Android系统启动的过程中,去理解在系统启动时,AMS如何启动并完成初始化的,以及在...原创 2019-04-21 11:20:25 · 2734 阅读 · 0 评论 -
Android View的测量、布局、绘制过程详解(下)
View的measure()方法是final的,因此我们无法在子类中去重写这个方法,在该方法内部会调用onMeasure()方法。所以我们自定义view时,要重写也是重写onMeasure方法。同理,layout、draw也是final的,我们根据需要重写onLayout和onDraw方法即可。1、measure过程measure过程要分成两种情况来看:1、如果只是一个view,那么直接调...原创 2019-06-18 22:39:22 · 3321 阅读 · 0 评论 -
Android消息机制详解:Handler、MessageQueue、Looper
1、Handler的诞生背景在Android中,规定了只能在主线程(或者叫UI线程)中,去进行UI相关的操作,而其他线程则无法操作UI,否则报错;但同时,由于不能再UI线程进行耗时的操作,否则会报ANR异常, 因此,我们通常又把耗时操作放到子线程去进行一个处理。那这就涉及到了一个数据传递的问题,我们在子线程处理的数据,怎么传递到主线程呢?这就有了Handler消息机制。为什么要设计为只能在...原创 2019-06-15 21:58:55 · 653 阅读 · 0 评论 -
Android 事件传递机制详解(事件的分发、拦截、处理)
1、事件在Android中的传递顺序事件在Android的传递顺序:Activity--> Window-->DecorView --> 布局View或者说以上顺序是事件在应用层的传递顺序。如果要说整个事件的传递机制,是Android底层收到触摸屏的事件后,使用socket跨进程通信,用InputDispatcher将事件发送给APP进程,由主线程的Looper去取出消...原创 2019-06-16 12:04:28 · 20648 阅读 · 2 评论 -
Android View的测量、布局、绘制过程详解(上)
Android View的绘制过程主要有三步:测量 Measure布局 Layout绘制 Draw首先理解MeasureSpec的含义,然后跟踪ViewGroup的measure、layout、draw三个方法即可view的绘制流程是我们在自定义View中通常会使用到的一个知识点,也是一个面试常问的点。简直是Android开发必备知识。1、理解ViewRootImpl和DecorV...原创 2019-06-17 22:32:34 · 1463 阅读 · 1 评论 -
Android AsyncTask的使用及源码分析
在上一篇博客中,我们提到AsyncTask的任务默认是串行执行的,并且AsyncTask对象必须在主线程中创建,并且一个AsyncTask对象只能执行一次execute方法,否则就会报错,这一切的原因是什么呢?本文就将通过源码分析来解释这几个问题。首先来再看一下AsyncTask的几个核心方法:excute: 创建好AsyncTask对象后,需要调用此方法才开始执行任务;onPreExec...原创 2019-06-30 10:24:22 · 264 阅读 · 0 评论 -
Android源码解析--EntropyMixer(EntropyService 随机数)服务详解
分析源码为Android5.1(android 22)EntropyMixer(EntropyService)不明白Google为什么要改名字, 以前的EntropyService类名改为了EntropyMixer。EntropyMixer服务主要用来产生随机数.在Android4.0以后已经更新为EntropyMixer类了,名字变了,功能还是那些。物理学上定义熵的定义,一个系统中熵越大...原创 2019-03-30 19:39:48 · 1479 阅读 · 0 评论 -
Android源码解析--SystemServer启动的各种服务汇总集合
要想了解Android系统,了解SystemServer进程及其启动的各种核心服务,是一个必要的过程,SystemServer启动了几十个服务,这里我们选择其中的一部分进行分析:1、EntropyMixer(EntropyService) 随机数服务...原创 2019-03-30 19:38:56 · 586 阅读 · 0 评论 -
Activity的View界面是如何绘制出来的--Activity的Window创建过程
前言有一定的Android开发经验后,我们逐渐了解到,Activity内部有一个DecorView,它是我们布局View的根View, 那么这个View是怎么呈现出来的呢,我们今天来简单的讲解一下。在Android中, Window表示一个窗口。事实上,我们Activity的DecorView就是附加在这么一个Window窗口上的。从Android的事件传递机制中,就可以体现出来。当我们在...原创 2018-04-08 08:27:50 · 655 阅读 · 0 评论 -
Android的IPC机制--实现AIDL的最简单例子(上)
前言对于AIDL的介绍, 将主要分为两部分:上篇 将介绍 ADIL的使用, 给出对应的demo下篇 将分析ADIL的实现原理及源码分析一、到底什么是AIDLAIDL是一个缩写,全称是Android Interface Defination Language, 即Android接口定义语言。它的主要作用是实现跨进程通信。通过定义我们想要的AIDL文件, 会自动在生成对应的jav...原创 2018-04-01 10:24:56 · 1878 阅读 · 1 评论 -
Dialog的View是如何绘制出来的--Dialog的Window(view)的创建过程
上一篇博客我们介绍了Activity的Window创建过程及最后如何展示出来的,这一篇我们接着分析Dialog的Window创建及展示。Dialog在我们的开发中也算是一个特别常用的组件了, 比如AlertDialog, ProgressDialog、自定义Dialog等等, 他们都是Dialog类的子类, 所以这里我们就直接分析Dialog了。一、创建一个简单的dialog上一篇...原创 2018-04-08 22:37:50 · 2186 阅读 · 1 评论 -
一张图表示Activity启动流程-- Activity启动流程详解
Activity启动流程比较复杂, 涉及的类及代码都很多, 本文侧重从整体流程描述这个过程,给出关键节点,尽量少的涉及代码细节。啥也不说了,先上图。在看本文的内容时, 可以参照此图片进行阅读。Activity的启动过程主要会涉及五个进程:Launcher进程、System_server进程、当前的前台进程、待启动的Activity所在进程、Zygote进程, 在上图中已有所体现。...原创 2018-03-26 17:30:46 · 8225 阅读 · 6 评论 -
Toast的View界面是如何绘制出来的--Toast的Window(view)创建过程
前面我们已经讲述了Activity的Window创建过程、Dialog的Window创建过程, 本文将继续探索Window相关的知识:Toast的创建过程 及 其 View界面的展示。代码示例Toast的一般使用非常简单, 一行代码就可以搞定: Toast.makeText(this, "Toast测试", Toast.LENGTH_SHORT).show();通过ma...原创 2018-04-11 22:03:41 · 1617 阅读 · 0 评论 -
Android的IPC机制--实现AIDL的最简单例子(下)
AIDL用法详解及源码分析上一篇博客主要讲了如何使用AIDL, 这一篇我们将进入AIDL的身体,去分析源码。上一章已经提到过了,AIDL也是基于Binder通信的, 其实Android的绝大部分跨进程通信都是依赖Binder来完成的(还有极少数是基于socket)。通过这一章的阅读,我们将基本掌握Binder通信的套路。补充:oneway关键字上一章的介绍中, 有一个关键字没有...原创 2018-04-05 00:19:44 · 839 阅读 · 1 评论 -
源码分析:Activity对LoaderManager的管理
本文主要从Loader入手, 去分析Loader使用、Loader的源码分析等,主要分为以下四篇:1、Loader的用法详解2、Activity对LoaderManager的管理3、LoaderManager对Loader的管理4、CursorLoader的使用本文基于原生的 Android8.0源码进行分析。以下是第二篇内容Activity/Fragment对Loade...原创 2018-06-09 21:26:50 · 654 阅读 · 0 评论 -
源码分析:LoaderManager对Loader的管理
本文主要从Loader入手, 去分析Loader使用、Loader的源码分析等,主要分为以下四篇:1、Loader的用法详解2、Activity对LoaderManager的管理3、LoaderManager对Loader的管理4、CursorLoader的使用本文基于原生的 Android8.0源码进行分析。以下是第三篇内容LoaderManager对Loader的管理...原创 2018-06-09 21:29:59 · 568 阅读 · 0 评论 -
Android源码解析--SystemServer启动流程
1.前言在整个android系统中,进程的启动流程如下:init进程 –> Zygote进程 –> SystemServer进程 –>各种应用进程先启动init进程,它是整个linux系统的根进程,接着启动了Zygote进程,它是Android系统的根进程,接着启动的就是本文要讲到的SystemServer进程,它管理着Android系统的各种系统服务,然后才是启动各种...原创 2019-03-13 21:56:41 · 979 阅读 · 1 评论