AlarmManager第 1 篇 - AlarmManagerService启动
基于 Android7.1.1 源码,分析 AlarmManagerService 的启动流程,这里我们重点关注和分析 java 层的逻辑实现! 123456789private void startOtherServices() { ... ... ... traceBeginAndSlog("StartAlarmManagerService"); ...
阅读更多
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 co ...
阅读更多
Handler篇 3 - Looper 源码分析
基于 Android 7.1.1 源码,分析 Looper 的架构和原理。 1 成员变量1static final ThreadLocal<Looper> sThreadLocal = new ThreadLocal<Looper>(); 线程本地变量,用于保存每个线程创建出来的 Looper 对象! 1private static Looper sMainLooper; ...
阅读更多
Handler篇 2 - Handler 源码分析
基于 Android 7.1.1 源码,分析 handler 的架构和原理。 0 前言本片博客通过以下几个方面总结 Handler 源码的实现架构! 1 create HandlerHandler 提供了如下的构造器方法: 12345678910111213141516171819202122232425//【方法1】默认使用当前的线程的 Looper 对象创建 Handler,如果当前线程的没有 ...
阅读更多