简要分析Configuration 的变化过程之 updateConfigurationLocked
8最近需要研究一下有关Configuration的一些东西,本来想写一篇长篇大论,分析自己所看到的现象跟过程,不过本人太懒了,没耐心,所以一点一点来吧。。。
这次先发一点自己整理的书上的东西。。。
不一定都对,希望大家多多指正,互相交流。
*******************我是正文的分割线******************
1) Activity中onConfigurationChanged()会在AMS中的中被调用,别无他处,因此所有和Configuraton变化相关的函数调用都必须经过AMS的这个函数通知客户端Activity发生了Configuration的改变。 2) 引起Configuration改变的三种情况。a ) 在ActivityStack中执行resumeTopActivityLocked()函数时。ActivityStack会先询问Wms,看Wms中是否会改变该Activity的屏幕方向。 b ) 在Wms中调用addWindow()、removeWindow()、relayoutWindow()函数,也需要重新计算屏幕方向,如果有改变则调用sendNewConfinguration()向Ams报告新的Configuration值。 c ) 人为旋转设备,旋转消息会被InputManager模块截获。之后会调用到Wms的setRotation()再调用setRotationLocked(),然后又调用到sendNewConfiguration()函数。 以上三种情况都会调用到Ams的updateConfigurationLocked()函数,该函数将通知所有客户端Configuration发生了改变,这会导致所有的正在运行的Activity收到onConfigurationChanged()回调。</div
页:
[1]