Doze模式第 2 篇 - DeviceIdleController 动态机制
[toc] 基于 Android 7.1.1 源码,分析 doze 模式的原理! 0 综述在 doze 模式下,应用会受到以下限制: 暂停访问 network。 系统将忽略 wake locks。 标准 AlarmManager 闹铃(包括 setExact() 和 setWindow())推迟到 doze 模式的下一个 maintenance window 时间窗。 如果您需要设置在低电耗模式 ...
阅读更多
Doze模式第 1 篇 - DeviceIdleController 的启动
[toc] 基于 Android 7.1.1 源码,分析 doze 模式的原理! 0 综述下面是 Android devoloper 网站对于 doze 模式的介绍: 从 Android 6.0(API 级别 23)开始,Android 引入了两个省电功能,可通过管理应用在设备未连接至电源时的行为方式为用户延长电池寿命。 低电耗模式(doze)通过在设备长时间处于闲置状态时推迟应用的后台 CP ...
阅读更多
AlarmManager第 4 篇 - AlarmManagerService属性总结
首先我们来看看 AlarmManagerService 中的一些成员变量: 1、首先是一些二进制标志位: 1234567891011121314//【1】alarm 的类型,用二进制表示!private static final int RTC_WAKEUP_MASK = 1 << RTC_WAKEUP; // 1 << 0private static final int ...
阅读更多
AppOps 第 3 篇 - AppOps 权限相关方法
本文基于 Android 7.1.1 源码分析,如有错误,欢迎指正,谢谢! [toc] 0 综述前面分析了 AppOpsManager 中的一些接口,最终都会调用 AppOpservice 中的相应接口,下面我们来看下 AppOpservice 中的权限操作! 涉及的类如下: Settings 上层应用入口: 1234packages/apps/Settings/src/com/android ...
阅读更多
Permission第 5 篇 - grantPermission 权限授予
[TOC] 0 综述基于 Android 7.1.1 源码,分析系统的权限管理机制! 本片文章总结一下权限授予的相关接口。 对于 dangrous 权限,应用程序需要显式的弹出弹窗,让用户主动的选择。当用户撤销或者授予时,会主动的调用! 但是对于 normal permission,siginature permission 以及 uri permission 都是无需弹窗申请的! 那么我们来看下 ...
阅读更多
AlarmManager第 3 篇 - trigger Alarm 流程分析
[toc] 基于 Android7.1.1 源码,分析 AlarmManagerService 的架构和逻辑,本篇文章来分析下 trigger Alarm 的流程! 0 回顾在上一篇 set Alarm 文章中,我们知道, set 方法会调用 AlarmMS.rescheduleKernelAlarmsLocked 方法来设置下一个 alarm! 该方法用于设置下一个 Alarm! 1234567 ...
阅读更多
AppOps 第 2 篇 - AppOpsManager 分析
[toc] 本文基于 Android 7.1.1 源码分析,如有错误,欢迎指正,谢谢! 0 综述AppOpsService 实现了大部分的核心功能逻辑,但它不能被其他模块直接调用访问,而是通过 AppOpsManager 提供访问接口。 1 重要常量和变量下面我们来看下 AppOpsManager 中定义的一些重要的变量和常量! 1.1 Operation CodeAppOpsManager 一共 ...
阅读更多
Permission第 4 篇 - requestPermission 权限申请
[TOC] 0 综述基于 Android 7.1.1 源码,分析系统的权限管理机制! 我们来分析下 dangerous 权限的申请,这类权限只能在 Activity 中申请,Activity 提供了如下接口,来帮助程序申请权限: 1 Activity.requestPermissions - 请求入口123456789101112public final void requestPermissio ...
阅读更多
UsageStats 第 4 篇 - UsageStatsService 和其他服务和进程的交互
[toc] 基于 Android7.1.1 源码分析 UsageStatsService 的架构和原理! 0 综述本文主要分析 UsageStatsService 和其他服务 / 进程交互! 我们知道 UsageStatsService 内部有两个类 LocalService 和 BinderService,他们是 UsageStatsService 提供給其他服务或进程的通信接口类! Bind ...
阅读更多
AppOps 第 1 篇 - AppOpsService 的启动
[toc] 本文基于 Android 7.1.1 源码分析,如有错误,欢迎指正,谢谢! 0 综述AppOpsService 的初始化是在 ActivityManagerService 启动的时候: 123456789101112131415161718192021222324252627282930public ActivityManagerService(Context systemContex ...
阅读更多