精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

5566中文字幕一区二区| 天堂资源在线亚洲| 国产91欧美| 成+人+亚洲+综合天堂| 欧美专区日韩视频| 久久精品亚洲a| 国产精品视频3p| 欧美中文一区二区三区| 国产香蕉一区二区三区| 九色在线视频蝌蚪| 国产999精品久久久久久| 国产成人小视频在线观看| 无码黑人精品一区二区| 嫩草一区二区三区| 欧美成人aa大片| 日韩精品你懂的| mm视频在线视频| 亚洲欧美电影院| 日韩精品久久一区| 亚洲人妻一区二区三区| 狠狠狠色丁香婷婷综合激情| 91成人免费观看网站| 日韩女优一区二区| 久久精品播放| 亚洲人成伊人成综合网久久久| 韩国三级在线看| 成人网av.com/| 欧美性受xxxx黑人xyx性爽| 人人干视频在线| 污污的网站在线免费观看| 中文字幕精品一区二区精品绿巨人| 国产精品一区二区三区免费| 国产美女永久免费| 六月丁香综合在线视频| 国产成人综合亚洲| 免费的毛片视频| 亚洲欧美高清| 欧美亚洲国产日本| 日韩免费在线视频观看| 欧美成人一品| 欧美丰满少妇xxxxx| frxxee中国xxx麻豆hd| 日韩激情一区| 中文字幕亚洲综合久久| 国产午夜精品久久久久久久久| 思热99re视热频这里只精品| 亚洲精品动漫久久久久| 水蜜桃av无码| 日韩精品免费一区二区三区竹菊| 精品裸体舞一区二区三区| 国产又粗又猛又爽又黄| xxxxxhd亚洲人hd| 日韩欧美一区中文| 艳妇乳肉豪妇荡乳av无码福利| www.成人| 91精品国产黑色紧身裤美女| 五月花丁香婷婷| 99久久久国产| 91精品国产乱| 日韩高清一二三区| 高清精品视频| 日韩av网站导航| 三级黄色片网站| 蜜臀av免费一区二区三区| 日韩精品久久久久久久玫瑰园| 久久人妻少妇嫩草av无码专区| 欧洲在线一区| 日韩精品一区二区三区第95| 国产一二三四五区| 欧美视频网址| 欧美成aaa人片在线观看蜜臀| 26uuu成人网| 国产综合网站| 热久久免费视频精品| 久久精品视频2| 精品一区二区三区视频在线观看| 亚洲xxxx在线| 涩涩视频在线观看免费| 中文字幕av一区二区三区高 | 亚洲av无码乱码在线观看性色| 国产·精品毛片| 久久久久se| 91短视频版在线观看www免费| 亚洲美女区一区| 国产免费观看高清视频| 日本.亚洲电影| 日韩亚洲欧美中文三级| 一级做a爰片毛片| 日韩午夜电影网| 久久久视频精品| 国产成人自拍偷拍| 人妻丰满熟妇av无码区| 久久99精品视频| 狠狠色综合一区二区| 91吃瓜网在线观看| 精品福利在线观看| 中国黄色片一级| 久久香蕉精品香蕉| 久久精品99久久久香蕉| 日本在线播放视频| 国产一区二区三区在线观看精品| 久久国产精品99久久久久久丝袜| 好操啊在线观看免费视频| 精品国产户外野外| 色姑娘综合天天| 成人同人动漫免费观看| 午夜免费在线观看精品视频| 在线播放精品视频| 久久久久亚洲蜜桃| 九九热只有这里有精品| 久久女人天堂| 日韩毛片在线观看| 黄页网站免费观看| 蜜臀av一区二区在线免费观看| 久久99精品久久久久子伦| 中文字幕资源网在线观看| 在线精品视频小说1| 小毛片在线观看| 欧美1区2区| 91九色单男在线观看| 黄色在线播放| 欧美午夜久久久| 亚洲少妇中文字幕| 欧美黄色精品| 92裸体在线视频网站| 1pondo在线播放免费| 91激情五月电影| 久久人妻少妇嫩草av无码专区| 国产精品chinese| 成人精品久久久| 无遮挡动作视频在线观看免费入口 | 欧美人牲a欧美精品| 成人黄色a级片| 亚洲综合国产| 久久亚洲国产精品日日av夜夜| 国产三线在线| 精品免费视频一区二区| 免费一级片视频| 国产伦精品一区二区三区免费迷 | 亚洲高清网站| ts人妖另类在线| 影音先锋在线播放| 日韩欧美一区二区久久婷婷| 色欲人妻综合网| 黄页网站大全一区二区| 成年人黄色在线观看| 激情中国色综合| www.久久久久| 国内精品久久久久久久久久| 一区二区三区资源| av漫画在线观看| 99热免费精品在线观看| 精品国产乱码一区二区三区四区| 久久影院午夜精品| 亚洲人成免费电影| 中文字幕黄色av| 国产精品国产a| 黄页网站在线看| 亚洲国产清纯| 麻豆成人av| 丁香久久综合| 欧美精品一二区| 欧美77777| 日本黄色一区二区| 日韩在线视频网址| 丰满少妇久久久久久久| 欧美日韩黄色一级片| 禁果av一区二区三区| 国产精品视频一区国模私拍| 黄色在线观看网站| 亚洲国产欧美精品| 波多野结衣视频在线看| 亚洲欧美中日韩| 亚洲精品乱码久久久久久蜜桃欧美| 9国产精品视频| 日韩久久久久久久| 嫩呦国产一区二区三区av| 国外成人在线直播| av在线首页| 欧美刺激脚交jootjob| 日日噜噜噜噜人人爽亚洲精品| 国产精品久久久久一区| 天天躁日日躁狠狠躁av麻豆男男| 久久这里有精品15一区二区三区| 久久免费视频2| 露出调教综合另类| 国产自摸综合网| sm性调教片在线观看| 神马久久久久久| 秋霞网一区二区| 欧美日韩亚洲高清一区二区| 国产精品99无码一区二区| 国产欧美日韩久久| 大尺度做爰床戏呻吟舒畅| 日韩电影免费在线| 日本一级黄视频| 精品国产乱码久久久久久蜜坠欲下 | 亚洲精品视频网| 欧洲精品一区二区| 欧美成人精品欧美一级乱黄| 1区2区3区国产精品| 无码h肉动漫在线观看| 风间由美一区二区三区在线观看| 五月天亚洲视频| 日韩午夜在线电影| 日韩a级黄色片| 久久大综合网| 日韩hmxxxx| 欧洲在线一区| 国产精品久久久久久久小唯西川| 国产福利91精品一区二区| 3344国产精品免费看| 色操视频在线| 久久久国产91| 97电影在线| 亚洲精品一区中文字幕乱码| av观看在线免费| 欧美日韩成人一区| 亚洲av无码不卡| 精品国产精品自拍| 国产午夜福利一区二区| 亚洲精品乱码久久久久久久久| 91成人精品一区二区| 久久久影院官网| 亚洲中文字幕一区| 不卡视频在线观看| 中文字幕18页| 国产毛片精品视频| 午夜免费一级片| 久草中文综合在线| 在线观看免费不卡av| 老色鬼精品视频在线观看播放| 亚洲色图久久久| 老司机精品视频网站| 女性隐私黄www网站视频| 国产精品一区毛片| 亚洲欧洲日产国码无码久久99| 日韩网站在线| 欧美 日韩 国产一区| 国产欧美午夜| 国产性xxxx18免费观看视频| 国产一区二区三区成人欧美日韩在线观看| 日韩日韩日韩日韩日韩| 亚洲视屏一区| 国产极品在线视频| 国产亚洲福利| 欧美少妇性生活视频| 日韩精品福利网| 国产高潮免费视频| 韩国女主播成人在线观看| 欧美污在线观看| 成人av网站大全| 一二三不卡视频| 国产日韩欧美精品综合| 免费黄色国产视频| 亚洲欧美国产高清| 日本熟妇乱子伦xxxx| 欧美日韩午夜视频在线观看| 亚洲无码精品一区二区三区| 精品视频一区二区三区免费| 97在线公开视频| 精品女同一区二区| 麻豆导航在线观看| 久久久精品一区二区| 久久香蕉av| 全球成人中文在线| 亚洲精品大片| 国产精品美女黄网| 深夜福利久久| 尤物国产精品| 1024成人| 国产精品视频黄色| 国产丶欧美丶日本不卡视频| 网站免费在线观看| 中文字幕在线观看一区二区| 黄色一级片在线免费观看| 欧美性猛交xxxx免费看| 国产精品国产精品国产专区| 精品国产成人在线影院| 国产污视频在线| 欧美国产欧美亚洲国产日韩mv天天看完整| 男人av在线播放| 成人在线激情视频| 亚洲激情77| 成人一区二区av| 石原莉奈一区二区三区在线观看| 黄色a级三级三级三级| 91论坛在线播放| 欧美 日韩 国产 一区二区三区| 午夜私人影院久久久久| 国产剧情久久久| 精品亚洲男同gayvideo网站| av网站网址在线观看| 日本一区二区不卡| 国产精品x8x8一区二区| 在线免费观看一区二区三区| 亚洲综合三区| 老女人性生活视频| 国产精品美女久久久久久久网站| 日产亚洲一区二区三区| 在线不卡免费欧美| 看电影就来5566av视频在线播放| 欧美激情中文网| 国产在视频一区二区三区吞精| 麻豆精品视频| 亚洲大胆在线| 黄色片子免费看| 国产精品丝袜在线| 亚洲欧美一区二区三区在线观看| 精品国产精品网麻豆系列| 黄色在线免费网站| 国产精品亚洲аv天堂网| 一区二区三区视频免费观看 | 久久蜜桃精品| 国模无码视频一区| 亚洲人吸女人奶水| 中文字幕人妻精品一区| 国产视频在线观看一区二区| 91破解版在线观看| 成人黄视频免费| 久久久9色精品国产一区二区三区| 国产精品视频黄色| 国产亚洲精品7777| 日本视频在线观看免费| 日韩成人在线播放| www.51av欧美视频| 国产欧美综合精品一区二区| 国产精品地址| 精品国产免费久久久久久婷婷| 亚洲欧洲制服丝袜| 国产又爽又黄免费软件| 精品久久国产精品| 99久热在线精品视频观看| 在线观看日韩羞羞视频| 麻豆精品国产传媒mv男同 | 性做久久久久久| 日本韩国在线观看| 韩国福利视频一区| 欧美挤奶吃奶水xxxxx| 免费观看国产精品视频| av成人免费在线观看| 一级片中文字幕| 亚洲毛茸茸少妇高潮呻吟| 欧美日韩大片| 天天爽天天狠久久久| 免费在线欧美视频| 日韩精品123区| 日韩女同互慰一区二区| 成人超碰在线| 久久波多野结衣| 日本欧美大码aⅴ在线播放| 永久免费毛片在线观看| 欧美丰满高潮xxxx喷水动漫| 国产一二区在线观看| 成人欧美一区二区三区视频xxx| 国内精品久久久久久久影视麻豆| 国产+高潮+白浆+无码| 日韩欧美在线中文字幕| 国产大片在线免费观看| 成人免费淫片视频软件| 欧美大片专区| 五月婷婷综合在线观看| 在线观看视频一区二区| 国产激情在线视频| 国产一区免费在线观看| 久久一区欧美| 中文字幕电影av| 日韩成人免费视频| 欧美天堂一区| 91成人综合网| 国产日本亚洲高清| 国产日韩欧美中文字幕| 久久青草福利网站| 精品国产一区一区二区三亚瑟| 加勒比av中文字幕| 亚洲成国产人片在线观看| 国产天堂素人系列在线视频| 亚洲综合中文字幕68页| 亚洲在线国产日韩欧美| 日本在线观看网址| 亚洲国产日韩精品在线| av成人在线观看| 成人一级生活片| 国产午夜三级一区二区三| 午夜精品久久久久久久99热黄桃| 青草成人免费视频| 中文不卡在线| 蜜桃av免费看| 精品国产91洋老外米糕| 久久青草视频| 久久精品视频16| 亚洲码国产岛国毛片在线| 暖暖视频在线免费观看| 97神马电影| 蜜桃一区二区三区在线观看| 日本三级中文字幕| 久久久国产精品亚洲一区| 国产精品羞羞答答在线观看| 无码国产精品一区二区高潮| 欧美在线一区二区三区|