8
最近需要研究一下有關Configuration的一些東西,本來想寫一篇長篇大論,分析自己所看到的現(xiàn)象跟過程,不過本人太懶了,沒耐心,所以一點一點來吧。。。
這次先發(fā)一點自己整理的書上的東西。。。
不一定都對,希望大家多多指正,互相交流。
*******************我是正文的分割線******************
1) Activity中onConfigurationChanged()會在AMS中的中被調用,別無他處,因此所有和Configuraton變化相關的函數(shù)調用都必須經過AMS的這個函數(shù)通知客戶端Activity發(fā)生了Configuration的改變。 2) 引起Configuration改變的三種情況。 a ) 在ActivityStack中執(zhí)行resumeTopActivityLocked()函數(shù)時。ActivityStack會先詢問Wms, 看Wms中是否會改變該Activity的屏幕方向。 b ) 在Wms中調用addWindow()、removeWindow()、relayoutWindow()函數(shù),也需要重新計算屏幕方向,如果有改變則調用sendNewConfinguration()向Ams報告新的Configuration值。 c ) 人為旋轉設備,旋轉消息會被InputManager模塊截獲。之后會調用到Wms的setRotation()再調用setRotationLocked(),然后又調用到sendNewConfiguration()函數(shù)。 以上三種情況都會調用到Ams的updateConfigurationLocked()函數(shù),該函數(shù)將通知所有客戶端Configuration發(fā)生了改變,這會導致所有的正在運行的Activity收到onConfigurationChanged()回調。</div |