<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Calvin's Tech Space

    成于堅忍,毀于浮躁

       :: 首頁 :: 聯系 :: 聚合  :: 管理
    Android 窗口管理
    在整個控件樹的最頂端,是一個邏輯的樹頂,ViewParent,在源碼中的實現是ViewRoot(ViewRoot extends Handler implements ViewParent)。它是整個控件樹和WindowManager之間的事件信息的翻譯者。WindowManager是Android中一個重要的服務。它將用戶的操作,翻譯成為指令,發送給呈現在界面上的各個Window。Activity會將頂級的控件注冊到WindowManager中,當用戶真是觸碰屏幕或鍵盤的時候,WindowManager就會通知到,而當控件有一些請求產生,也會經由ViewParent送回到WindowManager中。從而完成整個通信流程。

    事件分發流程
    用戶在觸發一個時間后產生一個消息,消息先被window manager采集到,然后分發給client。
    window manager通過IWindow分發給client,我們知道ViewRoot使用IWindowSession與server通訊,使用IWindow接收消息,所以第一步消息到了ViewRoot這里來了
    也就是window manager->IWindow->ViewRoot
    到了ViewRoot后它把消息轉發給Looper(樓主可以看ViewRoot.java看它是怎么獲取當前線程的Looper的)
    Looper->ViewRoot$RootHandler().dispatch(),有轉發會給ViewRoot,然后就通過decor view形成的樹狀結構依次分發下去。

    window manager proxy中維護了view, ViewRoot, layout param三元組。
    每次調用window manager proxy的addView都會新增一個三元組。一般程序中都是調用addView(decor,...),也就是只對decor view調用addView

    *****************\
    在Activity在performLaunchActivity時,會使用Activity.attach()建立一個PhoneWindow主窗口。這個主窗口的建立并不是一個重點。handleResumeActivity真正要啟動一個Activity時候,將主窗口加入到WindowManager,當然并不是將主窗口本身,而是將主窗口的DecorView加入到WindowManager中。

    • performLaunchActivity@ActivityThread.java
    attach()@Activity.javaSession.java
    addWindow()@WindowManager

    mWindow = PolicyManager.makeNewWindow(this); --實例化一個activity或者dialog或者widget的地方才會make new window
    • handleResumeActivity()@ActivityThread.java
    addView()@WindowManagerImpl.java --添加DecorView到WindowManager中
    setView()@ViewRoot.java
    add()@IwindowSession.java
    | --這里通過AIDL調用
    add()@WindowManagerService$Service.java

    關于PhoneWindow:
    而PhoneWindow只是做了一個具體跟手機功能相關的公用事件的處理,所以在Android中PhoneWindow并不是一個抽象的純正概念,而是一個跟手機系統相關的一個特別窗口概念,例如按鍵的默認動作處理,按鍵音的發出等等。

    一個View對應一個ViewRoot

    問題:WindowMangerService如果通過AIDL將事件派發到客戶端的?
    posted on 2010-11-24 18:28 calvin 閱讀(2891) 評論(0)  編輯  收藏 所屬分類: Android
    主站蜘蛛池模板: 久久青青成人亚洲精品| 亚洲性色精品一区二区在线| 国产成人精品免费午夜app| 亚洲AV成人无码天堂| 亚洲国产精品13p| 久久国产乱子伦免费精品| 亚洲AV无码之国产精品| 狠狠色伊人亚洲综合成人| 无码免费午夜福利片在线 | aaa毛片视频免费观看| 亚洲熟妇av一区| 亚洲Av无码乱码在线znlu| 99久久久国产精品免费牛牛四川 | 亚洲精品蜜桃久久久久久| 手机在线看永久av片免费| 伊人免费在线观看高清版| 亚洲校园春色另类激情| 亚洲宅男天堂在线观看无病毒| 手机在线看永久av片免费| a级毛片高清免费视频| 亚洲AV电影天堂男人的天堂| 亚洲国产综合专区电影在线| 免费人成在线观看视频播放| 免费看黄视频网站| 国产精品免费福利久久| 曰批免费视频播放在线看片二| 亚洲综合久久1区2区3区| 中国亚洲女人69内射少妇| 国产精品高清全国免费观看| 91精品全国免费观看含羞草 | 青青青亚洲精品国产| 亚洲天天在线日亚洲洲精| 亚洲日本va中文字幕久久| 男人的天堂亚洲一区二区三区| 久久国产精品成人免费| 四虎一区二区成人免费影院网址| 亚洲一级免费毛片| 亚洲资源在线观看| 国产AV无码专区亚洲AV毛网站| 免费不卡中文字幕在线| 午夜一区二区免费视频|