AlarmManager第 2 篇 - set Alarm 流程分析
[toc] 基于 Android 7.1.1 源码,分析 AlarmManagerService 的机制 0 综述下面是设置精确 alarm 的方法: 123456789101112public static void setGlobalNoticeDialogForceShowAlarm(Context context) { Intent intent = new Intent( ...
阅读更多
Permission第 3 篇 - checkPermissions 权限检查
[toc] 0 综述基于 Android 7.1.1 源码,分析系统的权限管理机制! 下面来看下系统中的 check permission 相关的接口: 1 Context 权限检查接口 - ContextImpl在应用中申请权限离不开 Context,Context 中暴露了多个检查权限相关的接口,具体的实现是在 ContextImpl 中! 1.1 checkCallingPermission ...
阅读更多
AlarmManager第 1 篇 - AlarmManagerService启动
基于 Android7.1.1 源码,分析 AlarmManagerService 的启动流程,这里我们重点关注和分析 java 层的逻辑实现! 123456789private void startOtherServices() { ... ... ... traceBeginAndSlog("StartAlarmManagerService"); //【1】启动 A ...
阅读更多
Permission第 2 篇 - PackageManager 对权限的初始化流程
[toc] 基于 Android7.1.1 源码,分析权限管理机制 0 综述在分析 PackageManagerService 的时候,我们详细的分析了 PackageManagerService 的启动流程,包括安装信息解析,应用程序包的解析等等! 其中,涉及到了对系统中权限的解析和配置,但是由于 PackageManagerService 的启动流程过于负责,所以在 PackageManag ...
阅读更多
Permission第 1 篇 - Permission 配置和解析
[toc] 0 综述基于 Android 7.1.1,分析权限管理相关知识,下面关于 xml 配置的内容来自于 Android developer 文档,在加上我自身的理解! 1 Application 的权限配置和解析1.1 权限配置1.1.1 manifest 配置和 Application 权限相关配置相关的内容主要有 2 部分: 一个是在 <manifest></man ...
阅读更多
UsageStats 第 3 篇 - UserUsageStatsService 逻辑分析
[toc] 基于 Android7.1.1 源码分析 UsageStatsService 的架构和原理! 0 综述UserUsageStatsService 用于保存每个设备用户下的数据信息!每一个 UserUsageStatsService 内部都会有一个 UsageStatsDatabase 对象用于访问本地持久化文件! 本文主要分析 UserUsageStatsService 相关的接口,为 ...
阅读更多
UsageStats 第 2 篇 - UsageStatsService 消息处理
[toc] 基于 Android7.1.1 源码分析 UsageStatsService 的架构和原理 UsageStatsService 定义的事件类型目前一共有 8 种类型,全部定义在 UsageEvents.java 中,如下: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454 ...
阅读更多
Handler篇 5 - Message 源码分析
基于 Android 7.1.1 源码,分析 Message 的架构和原理。 1 成员变量1public int what; 用于标识 Message! 12public int arg1;public int arg2; 用于传递简单的整型数据,如果想传递复杂的数据使用 Bundle 1public Object obj; 用于发送任意对象,如果要用 Message 进行跨进程通信,obj 必须 ...
阅读更多
Binder跨进程通信 - 信使 Messenger
Android 已经内置了一些模板和工具类来帮助我们更好的实现跨进程通信,除了 aidl 模板,还有一个就是信使 Messenger,下面我们来分析下信使的原理! 1 Messenger 源码分析Messenger 本质上是实现了 aidl 模板,aidl 文件名为 IMessenger.aidl,位于 android/frameworks/base/core/java/android/os/IM ...
阅读更多
Handler篇 4 - MessageQueue 源码分析
基于 Android 7.1.1 源码,分析 handler 的架构和原理。 1 成员变量1private final boolean mQuitAllowed; 该变量表示 MessageQueue 是否可以退出,主线程的消息队列不可退出。 12@SuppressWarnings("unused")private long mPtr; // used by native code java 层有 ...
阅读更多