Gityuan

Keep on going never give up

[置顶]Android系统开篇

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

Android SDK与API Level对应关系

Android SDK与API Level Google发布的Android系统习惯以甜点命令,并且首字母以字母顺序表依次排序,对应表如下: 平台版本 API级别 版本代号 发布时间 Android 9.0 28 Pie(馅饼) 2018.8 ...

Android调试技巧(一)

本文介绍一些Android常见的调试技巧 一. 获取Trace 调用栈信息(Trace)是分析异常经常使用的,这里简单划分两类情况: 当前线程Trace: 当前执行流所在线程的调用栈信息; 目标进程Trace:可获取目标进程的调用栈,用于动态调试; 1.1 当前线程Trace 1) Java层 Thread.currentThread().dumpStack(...

AMS之dumpsys篇

基于Android 7.0的源码分析 一.概述 前面介绍过AMS相关的一些数据结构,每个数据结构有大量的成员变量,为了查询当前手机运行时状态的 变化值,可以通过dumpsys activity命令来完成,该方法最终是调用AMS.dump()方法。 dumpsys命令用法简要介绍过dumpsys命令 的基本用法,以及系统服务列表信息,那么本文重点介绍AMS。 根据dumpsys ...

AMS总结(一)

从另一个维度,简要总结下四大组件的超时统计区间,以及Handler情况。 一. 组件超时统计 1.1 Service 序号 App端方法 生命周期 计时起点 计时终点 1 AT.handleCreateService onCreate...

全面剖析SharedPreferences

一. 概述 SharedPreferences(简称SP)是Android中很常用的数据存储方式,SP采用key-value(键值对)形式, 主要用于轻量级的数据存储, 尤其适合保存应用的配置参数, 但不建议使用SP 来存储大规模的数据, 可能会降低性能. SP采用xml文件格式来保存数据, 该文件所在目录位于/data/data//shared_prefs/ 1.1 使用示例 Sh...

四大组件之ActivityRecord

一. 引言 BroadcastRecord,ServiceRecord都继承于Binder对象,而ActivityRecord并没有继承于Binder。 但ActivityRecord的成员变量appToken的数据类型为Token,Token继承于IApplicationToken.Stub。 appToken:system_server进程通过调用scheduleLaunchActi...

四大组件之ContentProviderRecord

一. 引言 作为四大组件之一的ContentProvider,相比来说是设计得稍逊色,有些地方不太合理,比如provider级联被杀, 请求provider时占用system_server的binder线程来wait()等。 即便很少自定义ContentProvider,但你也可以会需要使用到ContentProvider,比如通信录,Settings等; 使用Provider往往跟数据...

四大组件之BroadcastRecord

一. 引言 广播在Android系统使用频率比较高,广播的使用场景往往是在满足某种条件下发出一个事件(broadcast), 多处(Receiver)可以监听该事件通知并做出相应的改变。比如亮/灭屏,网络状态切换等事件发送时都会发出相应的广播。 LoadedApk ReceiverDispatcher InnerReceiver extends IIntentRe...

四大组件之ServiceRecord

一. 引言 Android系统中最为重要的服务便是AMS, AMS管理着framework层面四大组件和进程. 本文从另一个维度 来说一说四大组件之一的Service. 每个app进程运行的Service, 对应于system_server进程中AMS的ServiceRecord对象. 也就是说所有app进程的Service, 都会记录在system_server进程, 好比一个大管家. ...

四大组件之综述

本文基于Android 6.0的源代码,来分析四大组件的管理者AMS frameworks/base/services/core/java/com/android/server/am/ - ActivityManagerService.java - ProcessRecord - ActivityStackSupervisor.java - ActivitySta...