`
helin.era
  • 浏览: 13203 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

Android待机流程分析

阅读更多




以下分析基于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
分享到:
评论
6 楼 4apple 2014-01-14  
请问楼主,上面关系图是用哪个软件画的?
5 楼 crmchan 2012-07-04  
谢谢!!你的博客帮我理清部分思路!!
4 楼 jinhaize 2011-12-01  
确实好文章。
3 楼 k1102k27 2011-09-19  
abc[list]
[*]
[/list]123

2 楼 k1102k27 2011-09-19  
[url][/url][flash=200,200][/flash]
[u][/u][i][/i][b][/b]
1 楼 k1102k27 2011-09-19  
好文章啊,怎麼沒人頂?

相关推荐

    Android待机流程分析---锁屏、解锁模块.

    ### Android待机流程分析——锁屏、解锁模块 在深入探讨Android系统中锁屏与解锁模块的工作原理之前,我们先来了解一下这些概念的基本背景。Android操作系统作为全球最广泛使用的移动设备操作系统之一,其用户界面...

    Android 待机流程

    ### Android待机流程详解 #### 一、概览 Android系统的待机流程是用户界面管理中的一个重要组成部分,它涉及到系统如何处理设备锁屏状态下的各种交互逻辑。在Android 2.2版本中,这一过程主要由`...

    android休眠与唤醒驱动流程分析

    android休眠与唤醒驱动流程分析 android wakelock 休眠 唤醒

    流程分析图

    Android待机流程分析---锁屏、解锁模块 源码流程分析图

    Android 屏幕刷新率分析

    Android 屏幕刷新率分析 Android 屏幕刷新率是指 Android 设备中屏幕刷新率的分析和优化。屏幕刷新率是指屏幕在一秒内刷新的次数,通常以 Hz 为单位,例如 60Hz 代表屏幕在一秒内刷新 60 次。 为什么是 60 帧?这...

    android-sdk-sources-android-21.rar

    《Android SDK 源码分析:深入理解 Android 21 版本》 "android-sdk-sources-android-21.rar" 这个压缩包文件包含了 Android SDK 的源代码,特别针对 Android 21(Lollipop)版本。Android SDK 源码是 Android ...

    android手机通讯录系统

    - **网络依赖**:由于Android系统强调Web应用的集成,可能会导致较高的能耗,影响待机时间。 4. **优缺点** - **优点**:强大的用户界面,整合Web应用,支持多种功能,开放性带来丰富的应用生态。 - **缺点**:...

    深入理解Android5源代码

    Android 5.0优化了电池管理,引入了Doze模式,延长了设备的待机时间。这一部分将解析电源管理框架,解释Doze模式的工作原理以及如何通过编程接口进行电源优化。 六、安全性和权限管理 Android 5.0增强了权限管理,...

    android5.0 android-21 源码

    7. **编译与构建**:掌握AOSP(Android Open Source Project)的编译流程,使用mm、mka命令构建特定模块。 Android 5.0源码的学习不仅能够帮助开发者深入理解Android系统,还能为定制ROM、系统优化、漏洞分析等提供...

    H3 Android定制化文档

    - **制作不带签名的OTA包的步骤**:介绍了无签名包的制作流程。 - **制作带签名的OTA升级包**:解释了带签名包的制作方法。 - **制作OTA包常见问题和注意事项**:提供了制作过程中需要注意的问题和解决方案。 - *...

    一种实现Android智能电视快速恢复出厂设置的方法.pdf

    原始的Android系统在接收到用户恢复出厂设置的请求后,会经历包括执行恢复出厂设置和重启系统在内的多个步骤,整个过程需要执行两次恢复出厂设置操作和两次系统重启,最终才能进入待机模式。这些步骤包括清除工厂...

    android源码

    通过分析Android 17的源码,开发者可以更好地理解Android系统的工作流程,优化应用性能,解决系统级问题,同时也能为自定义ROM和系统扩展提供基础。不断深入学习和实践,将有助于成为一名更优秀的Android开发者。

    android源码开发实战6.05.zip

    1. Marshmallow命名:Android 6.0代号,引入了多项新特性,如Doze模式(深度休眠)和App Standby(应用待机)以优化电池寿命。 2. 权限管理:运行时权限模型,允许用户在安装后对应用权限进行精细化控制。 3. ...

    Android优化大师源代码.rar

    5.3 检查启动流程:分析应用启动过程,优化不必要的初始化操作。 六、数据库优化 6.1 SQLite查询优化:使用索引,避免全表扫描,合理设计数据表结构,减少JOIN操作。 6.2 数据库连接池:多线程访问数据库时,使用...

    安卓Android源码——闹钟源代码.zip

    在安卓Android系统中,闹钟功能是用户日常生活中不可或缺的一部分,它允许用户设置定时提醒,以便在特定时间执行某些...通过分析和学习,开发者可以提升自己在Android应用开发,特别是系统级服务和广播机制方面的技能。

    android定时关机

    所以,如果要在用户应用中实现定时关机,可能需要通过JNI(Java Native Interface)调用C或C++的库,这些库能够访问Android内核级别的函数,比如触发系统的关机流程。 4. **BroadcastReceiver**: 可以创建一个`...

    NFC流程概要

    Android Beam 工作流程分析 Android Beam是Android系统提供的一个特性,允许两台设备通过NFC技术进行近距离数据交换。 ##### 6.1 NFC 设备匹配到弹出“Tap”提示流程 当两台支持NFC的Android设备靠近时,会触发...

    详细的手机硬件测试流程

    - **电池测试**:测量待机和使用时的续航能力,测试充电速度和寿命。 - **摄像头测试**:验证像素、对焦、白平衡、曝光等,进行夜景和运动拍摄测试。 - **音频测试**:评估扬声器和麦克风的质量,进行通话和...

Global site tag (gtag.js) - Google Analytics