`
- 浏览:
13202 次
- 性别:
- 来自:
深圳
-
以下分析基于android2.2的google源码。
开机启动时,首先执行PhoneWindowManager.systemReady()(这之前的流程不分析)。调用KeyguardViewMediator.onSystemReady()进行待机锁屏及解锁逻辑。
KeyguardViewMediator是整个待机解/锁屏业务的调度器,负责调度锁屏界面的相关动作及查询解锁屏状态,包括以下一些内容:
查询锁屏状态,及当前处于锁屏状态还是已解锁状态,PhoneWindowManager持有KeyguardViewMediator的引用,当用户触摸屏幕或者按下某个键是,PhoneWindowManager会通过KeyguardViewMediator查询锁屏状态(锁定/解锁),进行不同的响应处理。如果处于锁定状态,系统输入事件会受到限制。
响应电源事件(黑/亮屏)。判断锁屏界面应该处于什么状态(显示或者重置)。手机黑屏后,锁屏界面马上就会显示出来,以便下一次亮屏后,马上就能显示锁屏界面,而不会出现闪烁或延时。
其他应用程序或者服务也可以请求禁止锁屏(通过调用KeyguardViewMediator的setKeyguardEnabled(boolean)方法)。例如接听来电界面。
KeyguardViewMediator类在WindowManagerPolicy(在手机系统中是PhoneWindowManager实例)初始化时被创建,并运行在它的线程上,锁屏的UI界面也是在这个线程上创建及显示的。KeyguardViewMediator类提供的状态查询api可以被诸如android.view.WindowManager、com.android.server.InputManager等其它线程调用,所以,KeyguardViewMediator类上的这些api方法都是线程同步的(synchronized)。
KeyguardViewMediator可以进行的调度操作包括:
1) 点亮屏幕pokeWakelock();
2) 报告锁屏权限验证是否成功keyguardDone(boolean);
3) 响应SIM卡状态变化并对锁屏界面做相应的调整onSimStateChanged()。
4) 调度待机锁屏UI界面的管理,包括显示handleShow ()、隐藏handleHide ()、重置handleReset ()、点亮屏幕handleWakeWhenReady()等,KeyguardViewMediator实现这部分调度是通过持有一个KeyguardViewManager来实现的。
KeyguardUpdateMonitor是所有会影响整个待机解/锁屏业务的事件的监控器。(除了作为监控器,它还发挥着类似上下文的作用,也许我们应该把这个类命名为(KeyguardContext)。它监控诸如时间改变、电池状态改变、时区改变、SIM卡状态变化、电话状态变化、电话信号变化等事件。它是一个观察者模式的被观察对象。观察者通过调用KeyguardUpdateMonitor的registerInfoCallback(InfoCallback)和registerSimStateCallback(SimStateCallback)方法进行注册,观察自己感兴趣的变化。KeyguardUpdateMonitor的观察者包括KeyguardViewMediator、LockScreen、PatternUnlockScreen、AccountUnlockScreen、PasswordUnlockScreen、SimUnlockScreen等。观察者通过调用KeyguardUpdateMonitor的removeCallback(Object)取消观察。
KeyguardViewManager负责管理待机屏UI界面的创建、显示、隐藏、重置以及通过一个回调KeyguardViewCallback通知调度器KeyguardViewMediator进行相关的调度。
LockPatternKeyguardView(KeyguardViewBase)是所有锁屏和解锁UI界面的宿主。它有2个模式Mode. LockScreen和Mode. UnlockScreen。它负责根据当前上下文环境切换当前应该显示的待机屏。它提供一个回调给当前显示的待机屏并处理其回调,如果回调动作是自己处理不了的,则继续报告给KeyguardViewMediator进行处理。
锁屏界面就是LockScreen;解锁界面包括SIM卡解锁SimUnlockScreen、图案解锁PatternUnlockScreen、密码解锁PasswordUnlockScreen、帐号解锁AccountUnlockScreen
解锁成功后,锁屏流程转到KeyguardViewMediator的keyguardDone(boolean, boolean) 进行后续的流程(如转到Launcher桌面)。
- 大小: 97.7 KB
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
### Android待机流程分析——锁屏、解锁模块 在深入探讨Android系统中锁屏与解锁模块的工作原理之前,我们先来了解一下这些概念的基本背景。Android操作系统作为全球最广泛使用的移动设备操作系统之一,其用户界面...
### Android待机流程详解 #### 一、概览 Android系统的待机流程是用户界面管理中的一个重要组成部分,它涉及到系统如何处理设备锁屏状态下的各种交互逻辑。在Android 2.2版本中,这一过程主要由`...
android休眠与唤醒驱动流程分析 android wakelock 休眠 唤醒
Android待机流程分析---锁屏、解锁模块 源码流程分析图
Android 屏幕刷新率分析 Android 屏幕刷新率是指 Android 设备中屏幕刷新率的分析和优化。屏幕刷新率是指屏幕在一秒内刷新的次数,通常以 Hz 为单位,例如 60Hz 代表屏幕在一秒内刷新 60 次。 为什么是 60 帧?这...
《Android SDK 源码分析:深入理解 Android 21 版本》 "android-sdk-sources-android-21.rar" 这个压缩包文件包含了 Android SDK 的源代码,特别针对 Android 21(Lollipop)版本。Android SDK 源码是 Android ...
- **网络依赖**:由于Android系统强调Web应用的集成,可能会导致较高的能耗,影响待机时间。 4. **优缺点** - **优点**:强大的用户界面,整合Web应用,支持多种功能,开放性带来丰富的应用生态。 - **缺点**:...
Android 5.0优化了电池管理,引入了Doze模式,延长了设备的待机时间。这一部分将解析电源管理框架,解释Doze模式的工作原理以及如何通过编程接口进行电源优化。 六、安全性和权限管理 Android 5.0增强了权限管理,...
7. **编译与构建**:掌握AOSP(Android Open Source Project)的编译流程,使用mm、mka命令构建特定模块。 Android 5.0源码的学习不仅能够帮助开发者深入理解Android系统,还能为定制ROM、系统优化、漏洞分析等提供...
- **制作不带签名的OTA包的步骤**:介绍了无签名包的制作流程。 - **制作带签名的OTA升级包**:解释了带签名包的制作方法。 - **制作OTA包常见问题和注意事项**:提供了制作过程中需要注意的问题和解决方案。 - *...
原始的Android系统在接收到用户恢复出厂设置的请求后,会经历包括执行恢复出厂设置和重启系统在内的多个步骤,整个过程需要执行两次恢复出厂设置操作和两次系统重启,最终才能进入待机模式。这些步骤包括清除工厂...
通过分析Android 17的源码,开发者可以更好地理解Android系统的工作流程,优化应用性能,解决系统级问题,同时也能为自定义ROM和系统扩展提供基础。不断深入学习和实践,将有助于成为一名更优秀的Android开发者。
1. Marshmallow命名:Android 6.0代号,引入了多项新特性,如Doze模式(深度休眠)和App Standby(应用待机)以优化电池寿命。 2. 权限管理:运行时权限模型,允许用户在安装后对应用权限进行精细化控制。 3. ...
5.3 检查启动流程:分析应用启动过程,优化不必要的初始化操作。 六、数据库优化 6.1 SQLite查询优化:使用索引,避免全表扫描,合理设计数据表结构,减少JOIN操作。 6.2 数据库连接池:多线程访问数据库时,使用...
在安卓Android系统中,闹钟功能是用户日常生活中不可或缺的一部分,它允许用户设置定时提醒,以便在特定时间执行某些...通过分析和学习,开发者可以提升自己在Android应用开发,特别是系统级服务和广播机制方面的技能。
所以,如果要在用户应用中实现定时关机,可能需要通过JNI(Java Native Interface)调用C或C++的库,这些库能够访问Android内核级别的函数,比如触发系统的关机流程。 4. **BroadcastReceiver**: 可以创建一个`...
Android Beam 工作流程分析 Android Beam是Android系统提供的一个特性,允许两台设备通过NFC技术进行近距离数据交换。 ##### 6.1 NFC 设备匹配到弹出“Tap”提示流程 当两台支持NFC的Android设备靠近时,会触发...
- **电池测试**:测量待机和使用时的续航能力,测试充电速度和寿命。 - **摄像头测试**:验证像素、对焦、白平衡、曝光等,进行夜景和运动拍摄测试。 - **音频测试**:评估扬声器和麦克风的质量,进行通话和...