Android存储系统之架构篇
基于Android 6.0的源码,剖析存储架构的设计一、概述本文讲述Android存储系统的架构与设计,涉及到最为核心的便是MountService和Vold这两个模块以及之间的交互。上一篇文章Android存储系统之源码篇从源码角度介绍相关模块的创建与启动过程,那么本文主要从全局角度把握和剖析Android的存储系统。MountService:Android...
View Article理解ContentProvider原理(一)
基于Android 6.0源码剖析,本文涉及的相关源码:frameworks/base/core/java/android/app/ActivityThread.java frameworks/base/core/java/android/app/ContextImpl.java frameworks/base/core/java/android/app/IActivityManager.java...
View ArticleAndroid进程调度之adj算法
一、概述提到进程调度,可能大家首先想到的是Linux cpu调度算法,进程优先级之类概念,本文并不打算介绍这些内容,而是介绍Android...
View Article理解Android线程创建流程
基于Android 6.0源码剖析,分析Android线程的创建过程/android/libcore/libart/src/main/java/java/lang/Thread.java /art/runtime/native/java_lang_Thread.cc /art/runtime/native/java_lang_Object.cc /art/runtime/thread.cc...
View ArticlebinderDied()过程分析
一. 概述理解Android进程启动之全过程介绍了进程是如何从AMS.startProcessLocked一步步创建的; 当进程不再需要时便会有杀进程的过程; 理解杀进程的实现原理介绍了Process.killProcess()如何一步步地将进程杀死.当系统内存不足时,会触发lmk杀进程; 以及系统本身通过AMS也会控制系统中各个状态的进程个数上限....
View Article理解Android进程启动之全过程
一. 概述Android系统将进程做得很友好的封装,对于上层app开发者来说进程几乎是透明的. 了解Android的朋友,一定知道Android四大组件,但对于进程可能会相对较陌生. 一个进程里面可以跑多个app(通过share uid的方式), 一个app也可以跑在多个进程里(通过配置Android:process属性).再进一步进程是如何创建的, 可能很多人不知道fork的存在....
View Article理解Binder线程池的管理
基于Android 6.0源码剖析,分析Binder线程池以及binder线程启动过程。frameworks/base/cmds/app_process/app_main.cpp frameworks/native/libs/binder/ProcessState.cpp framework/native/libs/binder/IPCThreadState.cpp...
View ArticlePackageManager启动篇
基于Android 6.0源码, 分析PackageManagerService的启动过程frameworks/base/services/core/java/com/android/server/pm/PackageManagerService.java...
View ArticleInstalld守护进程
基于Android 6.0的源码剖析installd的过程system/core/rootdir/init.rc frameworks/base/cmds/installd/installd.cpp rameworks/base/cmds/installd/commands.cpp rameworks/base/cmds/installd/utils.cpp 一、...
View ArticleART虚拟机之Trace原理
分析Art虚拟机的trace原理,相关源码都位于/art/runtime目录:/art/runtime/ - signal_catcher.cc - runtime.cc - intern_table.cc - thread_list.cc - java_vm_ext.cc - class_linker.cc - gc/heap.cc 一、概述Android...
View ArticleNative进程之Trace原理
一. 概述当发生ANR(Application Not Response,对于Java进程可通过kill -3向目标进程发送信号SIGNAL_QUIT, 输出相应的traces信息保存到目录/data/anr/traces.txt;而对于Native进程可通过...
View Article理解Android ANR的处理过程
基于Android 6.0源码, 分析当发生ANR时系统的处理过程frameworks/base/core/java/android/os/Debug.java frameworks/base/core/jni/android_os_Debug.cpp system/core/libcutils/debugger.c 一....
View ArticleInput系统—InputDispatcher线程
基于Android 6.0源码, 分析InputManagerService的启动过程frameworks/base/services/core/java/com/android/server/input/InputManagerService.java...
View ArticleInput系统—UI线程
一. 概述前面文章都是介绍了两个线程InputReader和InputDispatcher的工作过程。在InputDispatcher的过程讲到 调用InputChanel通过socket与远程进程通信,本文便展开讲解这个socket是如何建立的。对于InputReader和InputDispatcher都是运行在system_server进程;...
View ArticleInput系统—ANR原理分析
基于Android 6.0源码, 分析Input事件发生ANR的原理一. ANR概述当input事件处理得慢就会触发ANR,那ANR内部原理是什么,哪些场景会产生ANR呢。 “工欲善其事必先利其器”,为了理解input...
View ArticleWindowManagerService启动篇
基于Android 6.0源码, 分析WMS的启动过程。一. 概述Surface:代表画布WMS: 添加window的过程主要功能是添加Surface,管理所有的Surface布局,以及Z轴排序问题;SurfaceFinger: 将Surface按次序混合并显示到物理屏幕上;1.1 类图说明: 点击查看大图WMS继承于IWindowManager.Stub,...
View ArticleWMS之启动窗口过程
基于Android 6.0源码, 分析启动窗口的启动和结束过程。一. 概述Activity组件启动后,窗口并非马上显示,而是先显示starting window,作为Activity的预览窗口。startActivity启动过程分析介绍了Activity 的启动过程,那么本文将从window角度再来说说这个过程。二. 启动startingWindowAMS.startActivity...
View ArticleAndroid图形系统概述
基于Android 6.0源码, 简述Android图形系统frameworks/native/services/surfaceflinger/ frameworks/native/libs/gui/ 一. 概述Android系统中图形系统是相当复杂的,包括WindowManager,SurfaceFlinger,Open GL,GPU等模块。...
View Article