Gityuan

Keep on going never give up

[置顶]Android 操作系统架构开篇

基于Android 6.0或更高版本的源码,专注于分享Android系统原理、架构分析的原创文章,这是Android系列文章的开篇。

[置顶]Flutter 跨平台演进及架构开篇

基于Flutter 1.5.4或更高版本的源码,专注于分享Flutter引擎、框架、虚拟机等架构与原理解读的原创文章。

理解Android Context

一. 概述 接触过Android的小伙伴, 一定不会对Context感到陌生, 有大量的场景使用都离不开Context, 下面列举部分常见场景: 启动Activity (startActivity) 启动服务 (startService) 发送广播 (sendBroadcast), 注册广播接收者 (registerReceiver) 获取ContentResolver...

理解Application创建过程

一. 概述 system进程和app进程都运行着一个或多个app,每个app都会有一个对应的Application对象(该对象 跟LoadedApk一一对应)。下面分别以下两种进程创建Application的过程: system_server进程; app进程; 二. system_server进程 2.1 SystemServer.run [-> SystemSe...

loadLibrary动态库加载过程分析

本文讲述的Android系统体系架构中的动态库加载过程,相关源码如下: libcore/luni/src/main/java/java/lang/System.java libcore/luni/src/main/java/java/lang/Runtime.java libcore/luni/src/main/native/java_lang_System.cpp bionic/...

Android类加载器ClassLoader

本文讲述的Android系统体系架构,说一说ClassLoader加载过程 libcore/dalvik/src/main/java/dalvik/system/ - PathClassLoader.java - DexClassLoader.java - BaseDexClassLoader.java - DexPathList.java ...

理解AlarmManager机制

一. 概述 上一篇文章理解JobScheduler机制, 介绍了根据一定条件而触发的任务可以采用JobScheduler. 那么对于只是定时的任务, 而非考虑网络/时间之类的条件,也可以直接采用AlarmManager来完成. AlarmManager的用法 PendingIntent pi = PendingIntent.getBroadcast(mContext, 0, new I...

理解JobScheduler机制

一. 概述 对于满足网络、电量、时间等一定预定条件而触发的任务,那么jobScheduler便是绝佳选择。JobScheduler主要用于在未来某个时间下满足一定条件时触发执行某项任务的情况,那么可以创建一个JobService的子类,重写其onStartJob()方法来实现这个功能。 JobScheduler的schedule过程: JobScheduler scheduler =...

Choreographer原理

Choreographer.java DisplayEventReceiver.java frameworks/base/core/jni/android_view_DisplayEventReceiver.cpp frameworks/native/libs/gui/DisplayEventReceiver.cpp 一. 概述 前面两篇文章介绍了SurfaceFlinger原理,讲述...

SurfaceFlinger绘图篇

基于Android 6.0源码, 分析SurfaceFlinger原理 frameworks/native/services/surfaceflinger - Layer.cpp - Client.cpp 一. 图形显示输出 上一篇文章SurfaceFlinger原理(一),介绍了SurfaceFlinger和VSync的处理流程。当SurfaceFlinge...

SurfaceFlinger启动篇

基于Android 6.0源码, 分析SurfaceFlinger原理 frameworks/native/services/surfaceflinger/ - main_surfaceflinger.cpp - SurfaceFlinger.cpp - DispSync.cpp - MessageQueue.cpp - DisplayHardware/HWCo...

Android图形系统概述

基于Android 6.0源码, 简述Android图形系统 frameworks/native/services/surfaceflinger/ frameworks/native/libs/gui/ 一. 概述 Android系统中图形系统是相当复杂的,包括WindowManager,SurfaceFlinger,Open GL,GPU等模块。 其中SurfaceFlin...

以Window视角来看startActivity

基于Android 6.0源码, 从Window角度来分析Activity启动过程。 一. 概述 前面的文章startActivity启动过程分析,已从AMS的角度讲述了Activity启动过程,那么本文从WMS的角度说一说这个过程。 先用上一篇文章的流程图来简单回顾一下:点击查看大图 接下来,从文章startActivity启动过程分析的小节[2.10] AS.star...

WMS—启动窗口(StartingWindow)

基于Android 6.0源码, 分析启动窗口的启动和结束过程。 一. 概述 Activity组件启动后,窗口并非马上显示,而是先显示starting window,作为Activity的预览窗口。 startActivity启动过程分析介绍了Activity 的启动过程,那么本文将从window角度再来说说这个过程。 二. 启动startingWindow AMS.sta...

WMS—启动过程

基于Android 6.0源码, 分析WMS的启动过程。 一. 概述 Surface:代表画布 WMS: 添加window的过程主要功能是添加Surface,管理所有的Surface布局,以及Z轴排序问题; SurfaceFinger: 将Surface按次序混合并显示到物理屏幕上; 1.1 WMS全貌 说明: 点击查看大图 WMS继承于IWind...

Input系统—ANR原理分析

基于Android 6.0源码, 分析Input事件发生ANR的原理 一. 概述 当input事件处理得慢就会触发ANR,那ANR内部原理是什么,哪些场景会产生ANR呢。 “工欲善其事必先利其器”,为了理解input ANR原理,前面几篇文章疏通了整个input框架的处理流程,都是为了这篇文章而做铺垫。在正式开始分析ANR触发原理以及触发场景之前,先来回顾一下input流程。 ...

Input系统—事件处理全过程

基于Android 6.0源码, 分析Input系统的进程交互过程分析InputManagerService的启动过程. 一. 概述 先简单总结和回顾以下前几篇文章的内容: Input系统—InputReader线程:通过EventHub从/dev/input节点获取事件,转换成EventEntry事件加入到InputDispatcher的mInboundQueue。 ...