立即启动屏保以及其他方式启动流程图
2016-07-05 15:40:56 0 举报
立即启动,以及其他方式启动流程图
作者其他创作
大纲/内容
当发送ACTION_DREAMING_STARTED和ACTION_DREAMING_STOPPED广播时,PowerManagerService.java也会调到此流程。这个方法的具体调度过程就不做具体分析了。这里接下来只呈现大概流程
scheduleSandmanLocked()
createWhenToDreamDialog
startDreamLocked
何时启动
DockObserver.java基座
setActivatedOnSleep()
PowerManagerService的DockReceiver接收到dock的广播
DockObserver.java中handleDockStateChange()发送广播
DreamSettings.java
DreamController.javastartDream()
DreamManagerService.javastartDream()
SCREENSAVER_ACTIVATE_ON_DOCK(路径:/data/data/com.android.providers.settings/databases 数据库,secure表)
onDreamingStarted()
init
立即启动
PowerManagerService中的updatePowerStateLocked()
setActivatedOnDock()
onBootPhase()
updateDreamLocked()
attach()
DreamService.javaattach()将view添加进window
updateIsPoweredLocked()判断是否处于充电状态,更新dirty值来决定是否接下来执行dreaming
DOCK_UEVENT_MATCH
调用updateWakefulnessLocked(dirtyPhase1)此方法用来决定是否进入dreaming状态。用到之前存入的boolean值(基座还是充电状态)
handleSandman()
end
插入基座时
选择立即启动时除了会出现互动屏保,还会锁屏
setDockStateLocked
SCREENSAVER_ACTIVATE_ON_SLEEP
setActualDockStateLocked
充电时
mObserver
onCreateOptionsMenu()
DreamBackend.javastartDreaming()
根据mDirty的变化结合其他的属性一起判断是否要开始dreaming
hook for subclasses继承DreamService.java子类实现此功能
DreamManagerService.java的dream()
0 条评论
下一页