Gityuan

Keep on going never give up

[置顶]Android开篇

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

简述Activity与Window关系

一. 概述 AMS是Android系统最为核心的服务之一,其职责包括四大核心组件与进程的管理,而四大组件中Activity最为复杂。 其复杂在于需要跟用户进行UI交互(涉及Window),WMS其主要职责便是窗口管理,还有跟App,SurfaceFlinger等 模块间相互协同工作。简而言之: App主要是具体的UI业务需求 AMS则是管理系统四大组件以及进程管理,尤其是Act...

理解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/link...

Android类加载器ClassLoader

本文讲述的Android系统体系架构,说一说ClassLoader加载过程 一. 概述 Android从5.0开始就采用art虚拟机, 该虚拟机有些类似Java虚拟机, 程序运行过程也需要通过ClassLoader 将目标类加载到内存. 传统Jvm主要是通过读取class字节码来加载, 而art则是从dex字节码来读取. 这是一种更为优化的方案, 可以将多个.class文件合并...

理解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的处理流程。当SurfaceFling...

SurfaceFlinger启动篇

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