精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Android多窗口管理深入分析

移動開發 Android
Android GWES之Android窗口管理 1基本構架原理,Android的窗口管理是C/S模式的。Android中的Window是表示Top Level等頂級窗口的概念。DecorView是Window的Top-Level View,這個View我稱之為主View,DecorView會缺省的attach到Activity的主窗口中。主View被加入到 WindowManager中,WM使用WindowState與這個主View對應。

Android GWES之Android窗口管理 1基本構架原理,Android的窗口管理是C/S模式的。Android中的Window是表示Top Level等頂級窗口的概念。

DecorView是Window的Top-Level View,這個View我稱之為主View,DecorView會缺省的attach到Activity的主窗口中。

主View被加入到 WindowManager中,WM使用WindowState與這個主View對應。

 

  1. 在Activity在performLaunchActivity時,會使用Activity.attach()建立一個PhoneWindow主窗口。 
  2.  
  3. 這個主窗口的建立并不是一個重點。handleResumeActivity真正要啟動一個Activity時候, 
  4.  
  5. 將主窗口decorView加入到WindowManager 
  6. onCreate()@UserActivity.java > 
  7. setContentView()@Activity.java > 
  8. mWindow.setContentView() > 
  9. setContentView()@PhoneWindow.java > 
  10. installDecor(): 
  11. generateDecor() --> DecorView:ViewGroup 
  12. generateLayout() --> screen_simple.xml:id:content (FrameLayout) 
  13. decor.addView( screen_simple.xml ) 
  14.  
  15. handleLaunchActivity()@ActivityThread.java > 
  16. handleResumeActivity()@ActivityThread.java > ... 
  17. addView(decor)@WindowManagerImpl.java > 
  18. root = new ViewRoot(); 
  19. getWindowSession() --> sWindowSession --> IWindowSession 
  20. mWindow = new W() --> IWindow 
  21. root.setView(decor) 
  22. sWindowSession.add(mWindow...) 將mWindow.asBinder()作為參數調用服務端 
  23. decor.assignParent(root); 
  24.  
  25. { IWindow: Window Manager ---IWindow--> Client 
  26. API back to a client window that the Window Manager uses to inform it of interesting things happening. } 
  27. { IWindowSession: Client ---IWindowSession--> Window Manager } 
Android 核心分析(13) -----Android GWES之Android窗口管理

Android GWES之Android窗口管理 1基本構架原理       Android的窗口管理是C/S模式的。Android中的Window是表示Top Level等頂級窗口的概念。DecorView是Window的Top-Level View,這個View我稱之為主View,DecorView會缺省的attach到Activity的主窗口中。主View被加入到 WindowManager中,WM使用WindowState與這個主View對應。

Android窗口管理 - bacon36 - 我的Android筆記。

Activity 建立一個主窗口后,在將主窗口添加到WindowManager時,首先要建立WindowManager代理對象,并打開一個會話(實 現IWindowSession AIDL接口),并維持該會話。Activity將通過該會話與WindowManager建立聯系,這個Session是C/S體系的基 礎,Client通過WindowSession將window加入到Window Manager中。
一個完整的窗口概念橫跨了View,ViewRoot,WindowManager Service。Window,DecorView,View,IWindow ,ISession,WindowState之間的關系如下

Android窗口管理 - bacon36 - 我的Android筆記。

Client端的Activity通過Session會話與WindowManager建立對話,而WindowManager則通過IWindow接口訪問Client,將消息傳遞到Client端,通過消息分發渠道,將消息傳遞到處理函數OnXXX。
后面我們將通過Client,WM Service分別加以分析。
2 Client端      我一致認為在Android中Window的概念并不是個很重要的概念。他的Window類,只是在PhoneWindow和MidWindow中使用。 而PhoneWindow只是做了一個具體跟手機功能相關的公用事件的處理,所以在Android中PhoneWindow并不是一個抽象的純正概念,而 是一個跟手機系統相關的一個特別窗口概念,例如按鍵的默認動作處理,按鍵音的發出等等。
2.1 View 在Activity中真正重要的概念是View,以下是Google官方對View的定義:
This class represents the basic building block for user interface components. A View  occupies a rectangular area on the screen and is responsible for drawing and event handling. View is the base class for widgets, which are  used to create interactive UI components (buttons, text fields, etc.). The {@link android.view.ViewGroup} subclass is the base class  for layouts, which  are invisible containers that hold other Views (or other ViewGroups) and define their layout properties.
我 對View不做翻譯,翻譯成視圖好像不太佳,View在Android中,View比視圖具有廣的外延。View包含了用戶交互,包含了顯示,視圖在中 文中僅僅表示了靜態的顯示。對于View的理解應該從最容易的理解開始。我們使用過編輯器,在Android中這個編輯器就是一個View,這個編輯器需 要顯示文字,需要接收用戶的鍵盤輸入和鼠標選擇,但是一個屏幕上有多個編輯器,如何管理,如何切換焦點編輯器,這些都是需要管理的。
客戶端的組成:(Window,View,ViewRoot,WindowManager Proxy)

Android窗口管理 - bacon36 - 我的Android筆記。

在 Activity在performLaunchActivity時,會使用Activity.attach()建立一個PhoneWindow主窗口。 這個主窗口的建立并不是一個重點。handleResumeActivity真正要啟動一個Activity時候,將主窗口加入到 WindowManager,當然并不是將主窗口本身,而是將主窗口的DecorView加入到WindowManager中。
真 正Window核心的抽象概念存在于View,ViewRoot,WindowManger中的WindowState。為了描述概念的方便性,我特別 提出主View這個概念,這個主View就是Top-Level View of the window. 主View與View想對,突出主View是attatch到主窗口上的。而一般的View則是存在于主View中的。主窗口這個概念,我講的主窗口實際 上就是Android提到的Top Level Window。
我們所提到的概念:View,GroupView,DecorView,ViewRoot都是存在于Client端,只有WindowState這個概念存在于Window Manager Service端。
DecorView 實際上是一個ViewGroup。在依存關系上來講,對看個主窗口來講,DecorView是Top-Level View.View并不是關注的重點,重要的是我們如何需要知道分發路徑是建立在什么關系上的。View的成員變量mParent用來管理View上級關 系的。而ViewGroup顧名思義就是一組View的管理,于是在ViewGroup構建了焦點管理和子View節點數組。這樣通過View的 mParent和ViewGroup的mChildren構建了Android中View直接的關系網。

Android窗口管理 - bacon36 - 我的Android筆記。

2.2 Focus Path      所謂的Foucs Path就是我們的KeyEvent傳遞的路線。一般的我們的KeyEvent在主循環中主View通過View的焦點記錄關系傳遞到焦點View上。例 如下圖,View22是焦點,我們從最頂層的View通過mFcous的關系鏈找到最后所形成的路徑就是Focus Path。

Android窗口管理 - bacon36 - 我的Android筆記。

2.3 ViewRoot,Window Manager Proxy ViewRoot與Window Manager的核心是IWindowSession和IWindow。ViewRoot通過IWindowSession添加窗口到Window Manager。而IWindow這是Window Manager分發消息給Client ViewRoot的渠道。利用AIDL接口進行進程間通信。

Android窗口管理 - bacon36 - 我的Android筆記。

Android窗口管理 - bacon36 - 我的Android筆記。

ViewRoot實際是一個Handler,ViewRoot建立主View與WindowsManger通訊的橋梁。ViewRoot在本質上一個Handler。我們知道Handler的基本功能就是處理回調,發送消息。
Activity在使用getSystemService獲取WindowManagerImpl ,建立了一個WindowManagerImpl實例,即Window Manager服務的代理:
wm=(WindowManagerImpl)context.getSystemService(Context.WINDOW_SERVICE);并調用wm.addview添加窗口到WMService中。
這 個過程在客戶端建立了什么樣的管理框架,并如何這個會話?在Window Manager Proxy中建立了View,Layout ,ViewRoot三者的對應關系表。構造一個ViewRoot就會打開一個session,并利用IWindowSession建立會話上下文。

Android窗口管理 - bacon36 - 我的Android筆記。

4 Window Manager Service 本次對于Window Manager Service的研究僅限于FocusWindow,消息系統。其他的部分將在后面的專門章節討論。   
Window Manager管理的窗口是應用程序的Top-level窗口,我這里參照Window的概念叫主窗口。主窗口為什么要放在在Service這邊來管理 呢?為什么不放在Client那邊?主窗口放置在一起管理是為了計算Z-order序列,根據應用程序的狀態來顯隱應用程序的窗口。我想Android設 計者在考慮設計窗口系統的時候,一定首先考慮:
窗口z-order序的管理
活動窗口的計算,及其變化通知
窗口歸屬(屬于哪個應用)
輸入法管理

Window Service大體上實現了如下的功能:,
(1)Z-ordered的維護函數
(2)輸入法管理
(3)AddWindow/RemoveWindow
(4)Layerout
(5)Token管理,AppToken
(6)活動窗口管理(FocusWindow)
(7)活動應用管理(FocusAPP)
(8)轉場動畫
(9)系統消息收集線程
(11)系統消息分發線程
在服務端的窗口對象叫做WindowState。在Service維護了一個mWindow數組,這個mWindow就是Window的Z-order序數組。mWindowMap用于記錄。
WindowState有一個叫做mClient成員變量來記錄客戶端IWindow實例,通過IWindow接口實例,Service可以訪問客戶端的信息,說以IWindow是Service連接View橋梁。
(1) FocusWindow活動窗口如何計算?
基本原理就是查找前景應用(FousActivity),并同Z-Order序中找出屬于該FousActivity(AppToken)的主窗口,這個窗口就是計算出來的Focus Window。
(2)為什么要提出Token這個概念呢?
一個應用程序要管理自己的窗口,那么如何來標識該窗口是屬于某個Activity,Andoid設計者提出了AppToken這個概念。AppToken在本質上的描述:通過Token找到屬于該Token的allWindows。使用Token開始完成該應用程序的所有窗口的顯示和隱藏。
(3)系統消息收集與處理
我們下面重點研究Service中的系統消息收集模式及其分發模式。Service使用KeyQ作為專門的消息隊列。
KeyEvent
TouchEvent
TrackballEvent

系統有兩個線程:
KeyQ線程,通過Navite函數readEvent輪詢設備,將讀取的結果放置在KeyQ隊列中。
系統dispatcher 等待在KeyQ消息隊列上,一旦從消息隊列中獲取到消息,就通過分發函數通過mClient傳遞到Client端。

責任編輯:張葉青 來源: 博客
相關推薦

2010-09-07 14:21:22

PPPoE協議

2022-04-12 08:30:45

TomcatWeb 應用Servlet

2011-03-23 11:01:55

LAMP 架構

2010-03-08 14:53:48

Linux分區

2011-09-01 13:51:52

JavaScript

2023-02-01 08:13:30

Redis內存碎片

2025-09-16 10:57:31

2021-10-29 16:36:53

AMSAndroidActivityMan

2009-06-10 18:12:38

Equinox動態化OSGi動態化

2022-08-30 07:00:18

執行引擎Hotspot虛擬機

2009-12-16 16:39:01

Visual Stud

2009-12-14 14:50:46

Ruby傳參數

2010-01-08 16:58:49

網管交換機

2011-09-13 09:08:22

架構

2018-10-25 15:24:10

ThreadLocal內存泄漏Java

2020-12-07 06:23:48

Java內存

2018-12-18 10:11:37

軟件復雜度軟件系統軟件開發

2021-04-13 12:55:06

SpringMVC解析器接口

2015-08-03 09:54:26

Java線程Java

2023-08-07 07:44:44

點贊
收藏

51CTO技術棧公眾號

青青久久aⅴ北条麻妃| 日韩一级高清毛片| 亚洲精品人成| 国产高清免费观看| 久久精选视频| 久久视频在线视频| 醉酒壮男gay强迫野外xx| 成人久久网站| 婷婷久久综合九色综合绿巨人 | 欧美黑人狂野猛交老妇| www.自拍偷拍| 国产精品1区| 欧美日韩精品国产| 在线观看污视频| 暖暖视频在线免费观看| 国内精品在线播放| 日韩av免费一区| 久草国产在线观看| av亚洲免费| 亚洲精品av在线播放| 五月婷婷六月合| 综合另类专区| 午夜私人影院久久久久| 中文字幕av日韩精品| 你懂的好爽在线观看| 成人在线一区二区三区| 成人精品一区二区三区| www.色国产| 日韩一级在线| 欧美精品激情blacked18| 国产白丝一区二区三区| 偷拍视屏一区| 精品国精品国产| 激情久久综合网| 成人不卡视频| 91久久精品国产91性色tv| cao在线观看| 丝袜中文在线| 亚洲精品免费在线观看| 一区二区三区国| av在线天堂播放| 国产女人aaa级久久久级| 精品乱码一区二区三区| 国精产品一品二品国精品69xx | 午夜伦全在线观看| 国产无人区一区二区三区| 精品乱色一区二区中文字幕| 欧美性猛交 xxxx| 成人午夜在线视频| 99re在线| 成人免费观看在线视频| 国产成人av电影在线观看| 91在线无精精品一区二区| 一级片在线免费观看视频| 蜜臀av一级做a爰片久久| 国产精品jizz在线观看麻豆| 欧美brazzers| 美女视频黄频大全不卡视频在线播放| 国产精品99久久久久久白浆小说| 国产一级淫片a视频免费观看| 亚洲综合精品四区| 欧美在线视频一区| 青青国产在线视频| 青娱乐精品视频| 国产欧美精品一区二区| 国产又粗又猛又黄| 韩日av一区二区| 5g影院天天爽成人免费下载| 亚洲黄色一级大片| caoporn国产一区二区| 久久涩涩网站| av在线播放av| 1024亚洲合集| 国产 欧美 日韩 一区| 草美女在线观看| 日韩欧美国产中文字幕| 婷婷六月天在线| 999色成人| 精品日本一线二线三线不卡| 特大黑人巨人吊xxxx| 免费精品国产的网站免费观看| 这里只有精品久久| 亚洲av无码一区二区三区在线| 国产精品av一区二区| 日本成人免费在线| 国产又粗又黄视频| www.激情成人| 亚洲欧洲日韩综合二区| 手机在线免费看av| 一本色道亚洲精品aⅴ| mm131国产精品| 超碰在线成人| 国产亚洲一区二区精品| 精品爆乳一区二区三区无码av| 亚洲综合丁香| 91免费看网站| 国产尤物视频在线| 一区二区三区高清不卡| 狠狠操精品视频| 日韩在线网址| 亚洲一区www| 国产精久久久久久| 蜜桃久久av一区| 精品亚洲第一| 黄色网在线免费看| 色综合久久中文综合久久97 | 欧美午夜网站| 亚洲天堂成人在线| 欧美人妻精品一区二区三区| 久久综合九色| 成人情视频高清免费观看电影| 北岛玲一区二区三区| 亚洲成人www| 黄色三级视频在线播放| 欧美日韩精品一区二区视频| 欧美激情精品久久久| 中文字幕在线网址| 91香蕉视频mp4| 成人污网站在线观看| 日韩制服诱惑| 亚洲美女在线看| 黄色激情视频在线观看| 精品一区二区三区免费视频| 欧美一级二级三级九九九| av今日在线| 日韩女优毛片在线| 波多野结衣不卡视频| 麻豆91在线播放免费| 欧美在线一二三区| 激情视频网站在线播放色| 日韩一级黄色片| 九九热最新地址| 国内精品国产三级国产a久久| 视频一区二区在线| 51一区二区三区| 精品亚洲精品福利线在观看| 国产污片在线观看| 丰满白嫩尤物一区二区| 成人黄色片免费| 久久综合偷偷噜噜噜色| 久久天天躁狠狠躁老女人| 伊人久久一区二区| 国产欧美日韩不卡免费| 国产精彩免费视频| 国产精品一区二区三区av麻| 国产999精品| 青青青免费视频在线2| 欧美日韩日本国产| 国产精品无码在线| 国产日韩精品视频一区二区三区| 国产精品免费观看高清| xxxx视频在线| 日韩精品电影网| 六月丁香激情综合| 久久久综合网站| 91av在线免费播放| 成人写真视频| 成人精品久久一区二区三区| 二区三区四区高清视频在线观看| 在线播放一区二区三区| 国产成人av免费在线观看| 韩国欧美国产1区| 欧美大片免费播放| 国产伦精品一区二区三区在线播放| 欧美多人爱爱视频网站| 婷婷色在线视频| 色婷婷亚洲婷婷| 三级黄色在线观看| 国产精品一区二区在线观看网站 | 日本无删减在线| 成人网ww555视频免费看| 亚洲一区在线观看网站| 中国一级特黄录像播放| 噜噜噜久久亚洲精品国产品小说| 日韩一区二区三区资源| 国产欧美88| 国内外成人免费激情在线视频 | 99综合电影在线视频| 日韩av播放器| 亚洲一区在线| 精品一区久久| 日韩一级特黄| 午夜精品久久久久久久99黑人 | 久久久久久有精品国产| 青青草超碰在线| 欧美欧美欧美欧美| 日本熟妇色xxxxx日本免费看| 久久婷婷综合激情| 日日干日日操日日射| 日韩视频不卡| 亚洲午夜精品久久久久久浪潮| 久久精品一级| 国产97在线视频| 欧美xxxx性xxxxx高清| 亚洲日本欧美日韩高观看| 国产孕妇孕交大片孕| 午夜久久久影院| 我要看黄色一级片| 久久综合久久综合九色| 国内av免费观看| 丝袜诱惑亚洲看片| 真实国产乱子伦对白视频| 欧美久久精品一级c片| 国产九区一区在线| 亚洲天堂网站| 人体精品一二三区| 久久五月精品中文字幕| 中文字幕一区二区精品| 少妇精品视频一区二区| 在线成人av网站| 亚洲欧美综合另类| 国产精品不卡在线| 毛茸茸多毛bbb毛多视频| 国产精品一区二区果冻传媒| 日韩一级在线免费观看| 影音先锋一区| 伊人久久在线观看| 日韩一区电影| 欧美日韩在线观看一区| 精品欠久久久中文字幕加勒比| 91老司机精品视频| 日韩精品一区二区三区av| 国产91成人video| 国产网红在线观看| 美女av一区二区三区| avav免费在线观看| 亚洲男人天堂视频| 婷婷五月综合久久中文字幕| 欧美放荡的少妇| 亚洲视频在线观看免费视频| 91久久精品一区二区三区| 国产午夜视频在线播放| 亚洲激情综合网| 男人在线观看视频| 欧美国产成人在线| 国产小视频自拍| 久久午夜色播影院免费高清| 亚洲精品女人久久久| 成人综合在线观看| 亚洲av无码专区在线播放中文| 国内欧美视频一区二区| 极品粉嫩美女露脸啪啪| 久久精品久久99精品久久| 亚洲欧美日韩一级| 蜜臀av一区二区在线免费观看| 欧美伦理片在线看| 日韩精品一二区| 日本美女高潮视频| 免费美女久久99| 精品亚洲一区二区三区四区| 久久精品免费看| 久久成年人网站| 国产精品一区二区久久不卡 | 国产精品视屏| 精品无人区一区二区三区| 台湾亚洲精品一区二区tv| 免费看国产精品一二区视频| 亚洲瘦老头同性70tv| 日韩不卡av| 97精品在线| 日韩精品久久一区二区| 亚洲精品色图| 日本精品一区二区三区四区| 日韩电影在线观看一区| 日韩av.com| 国产91在线观看| 一级性生活大片| 国产精品美女久久久久高潮| 国产大片免费看| 五月天一区二区| 国产一级片av| 日韩欧美一区中文| 婷婷av一区二区三区| 国产一区二区h| 国产精品视频免费观看www| 国产乱子精品一区二区在线观看| 亚洲精品日韩激情在线电影| 久久草在线视频| 视频一区二区综合| 欧美日一区二区在线观看| 成年人视频观看| 久久国产乱子精品免费女| www.欧美com| 久久久久久黄色| 国产精品久久久精品四季影院| 午夜精品免费在线观看| 中文字幕乱码一区二区| 日韩一级片在线播放| 欧美新色视频| 米奇精品一区二区三区在线观看| 台湾佬中文娱乐网欧美电影| 国产一区二中文字幕在线看| 欧美日韩一本| 国产人妻互换一区二区| 性欧美videos另类喷潮| 国内精品国产三级国产aⅴ久| 国产亚洲一区字幕| 青青操国产视频| 欧美色综合久久| 四季av日韩精品一区| 日韩视频欧美视频| 亚洲精品承认| 日本高清+成人网在线观看| 精品视频在线观看免费观看 | 国产精品久久久久免费a∨大胸 | 在线一区av| 成人91免费视频| 久久亚洲国产| 精品久久久久久久免费人妻| 福利一区福利二区| 人人澡人人澡人人看| 色狠狠综合天天综合综合| 亚洲风情第一页| 久久精品国产亚洲精品| 深田咏美中文字幕| 欧美在线资源| 久久国产这里只有精品| 久久久久久久国产精品影院| 日本污视频在线观看| 91精品免费在线| 天天综合视频在线观看| 日韩暖暖在线视频| 精品精品国产三级a∨在线| 日本一道在线观看| 国内精品免费**视频| 青青草自拍偷拍| 欧美网站一区二区| 邻家有女韩剧在线观看国语| 国外成人性视频| 中文字幕av一区二区三区四区| 福利网在线观看| 久久精品国产**网站演员| 大胸美女被爆操| 欧美性猛交一区二区三区精品| 欧美日韩在线精品一区二区三区激情综| 欧美激情综合色综合啪啪五月| 精品99re| 欧美 国产 精品| 国产乱子伦一区二区三区国色天香 | 日韩特级黄色片| 亚洲精品wwwww| 嗯~啊~轻一点视频日本在线观看| 国产精品swag| 一本色道久久综合一区| 亚洲av成人片色在线观看高潮 | 国产视频一区在线播放| 久久精品国产成人av| 精品小视频在线| 日韩天堂在线| 亚洲国产一区二区三区在线播| 美女国产一区二区| 五月婷婷综合激情网| 欧美日本一区二区| 成人在线观看免费网站| 91沈先生播放一区二区| 黄色成人在线网站| 人妻换人妻a片爽麻豆| 亚洲成人1区2区| 日韩福利一区二区| 国产精品av在线播放| 国产精品久久久久蜜臀 | 亚洲永久精品一区| 中文在线资源观看视频网站免费不卡| av一区在线| 四虎免费在线观看视频| 国产成a人无v码亚洲福利| 国产午夜在线播放| 亚洲天堂第二页| 精品国产亚洲一区二区三区大结局| 日本a在线天堂| 91色porny| 在线观看色网站| 欧美大片欧美激情性色a∨久久| 激情av综合| 美女网站视频黄色| 亚洲在线观看免费| 日本中文字幕一区二区有码在线| 国产精品视频色| 午夜日韩福利| 亚洲精品视频大全| 欧美日韩国产综合久久| 欧美精品videosex| 欧美亚洲另类久久综合| 久久激情五月婷婷| 懂色av.com| 日韩一区二区三区国产| 福利欧美精品在线| 国产超碰在线播放| 洋洋成人永久网站入口| 你懂的好爽在线观看| 91亚洲精品丁香在线观看| 国产美女一区| 手机在线免费看片| 精品偷拍各种wc美女嘘嘘| 伊人久久大香线蕉综合影院首页| 一区二区传媒有限公司| 中文字幕在线免费不卡| 婷婷在线免费观看| 成人国产在线激情| 丝袜亚洲精品中文字幕一区|