国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁 > news >正文

網(wǎng)站開發(fā)規(guī)劃書百度人工優(yōu)化

網(wǎng)站開發(fā)規(guī)劃書,百度人工優(yōu)化,發(fā)布裝修信息的平臺有哪些,網(wǎng)站這么推廣作者:bobby_developer 1. WMS原理:WMS角色與實例化過程 window:它是一個抽象類,具體實現(xiàn)類為 PhoneWindow ,它對 View 進(jìn)行管理。Window是View的容器,View是Window的具體表現(xiàn)內(nèi)容; windowManager:是一個接…

作者:bobby_developer

1. WMS原理:WMS角色與實例化過程

  • window:它是一個抽象類,具體實現(xiàn)類為 PhoneWindow ,它對 View 進(jìn)行管理。Window是View的容器,View是Window的具體表現(xiàn)內(nèi)容;

  • windowManager:是一個接口類,繼承自接口 ViewManager ,從它的名稱就知道它是用來管理 Window 的,它的實現(xiàn)類為 WindowManagerImpl;

  • WMS:是窗口的管理者,它負(fù)責(zé)窗口的啟動、添加和刪除。另外窗口的大小和層級也是由它進(jìn)行管理的;

SystemServer啟動WMS流程表:

1.1 window

1.2 顯示層級

1.3 窗口標(biāo)志位

1.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON(當(dāng)Window可見時允許鎖屏)
2.FLAG_NOT_FOCUSABLE(Window 不能獲得輸入焦點,即不接受任何按鍵或按鈕事件,例如該 Window 上 有 EditView,點擊 EditView 是 不會彈出軟鍵盤的,Window 范圍外的事件依舊為原窗口處理;例如點擊該窗口外的view,依然會有響應(yīng)。另外只要設(shè)置了此Flag,都將會啟用FLAG_NOT_TOUCH_MODAL) 3.FLAG_NOT_TOUCH_MODAL(設(shè)置了該 Flag,將 Window 之外的按鍵事件發(fā)送給后面的 Window 處理, 而自己只會處理 Window 區(qū)域內(nèi)的觸摸事件;Window 之外的 view 也是可以響應(yīng) touch 事件。 4.FLAG_NOT_TOUCHABLE(設(shè)置了該Flag,表示該 Window 將不會接受任何 touch 事件,例如點擊該 Window 不會有響應(yīng),只會傳給下面有聚焦的窗口) 5.FLAG_KEEP_SCREEN_ON(只要 Window 可見時屏幕就會一直亮著,視頻播放、游戲) 6.FLAG_LAYOUT_NO_LIMITS(允許 Window 超過屏幕之外)
7.FLAG_IGNORE_CHEEK_PRESSES(當(dāng)用戶的臉貼近屏幕時(比如打電話),不會去響應(yīng)此事件 )
8.FLAG_SHOW_WHEN_LOCKED(當(dāng)用戶的臉貼近屏幕時(比如打電話),不會去響應(yīng)此事件
9.FLAG_IGNORE_CHEEK_PRESSES ; 窗口可以在鎖屏的 Window 之上顯示, 使用Activity#setShowWhenLocked(boolean) 方法代替)

1.4 WindowManager

在了解WindowManager管理View實現(xiàn)之前,先了解下WindowManager相關(guān)類圖以及Activity界面各層級顯示關(guān)系;

2. WMS工作原理

2.1 WMS職責(zé)

2.2 WMS中重要的一些屬性釋義

2.3 AddWindow源碼分析

WMS中addWindow源碼分析,在分析addWindow之前,先了解幾個類;

  • WindowToken

    WindowToken具有令牌的作用,是對應(yīng)用組件的行為進(jìn)行規(guī)范管理的一個手段。WindowToken由應(yīng)用組件或其管理者負(fù)責(zé)向WMS聲明并持有。應(yīng)用組件在需要新的窗口時,必須提供WindowToken以表明自己的身份,并且窗口的類型必須與所持有的WindowToken的類型一致,同時它將屬于同一個應(yīng)用組件的窗口組織在了一起;

  • DisplayContent

    如果說WindowToken按照窗口之間的邏輯關(guān)系將其分組,那么DisplayContent則根據(jù)窗口的顯示位置將其分組。隸屬于同一個DisplayContent的窗口將會被顯示在同一個屏幕中。每一個DisplayContent都對應(yīng)這一個唯一的ID,在添加窗口時可以通過指定這個ID決定其將被顯示在那個屏幕中。DisplayContent是一個非常具有隔離性的一個概念。處于不同DisplayContent的兩個窗口在布局、顯示順序以及動畫處理上不會產(chǎn)生任何耦合。因此,就這幾個方面來說,DisplayContent就像一個孤島,所有這些操作都可以在其內(nèi)部獨立執(zhí)行。因此,這些本來屬于整個WMS全局性的操作,變成了DisplayContent內(nèi)部的操作了。

  • WindowState 表示一個窗口的所有屬性,所以它是WMS中事實上的窗口;當(dāng)向WMS添加一個窗口時,WMS會為其創(chuàng)建一個WindowState。另外WMS.addWindow()函數(shù)中看到新的WindowState被保存到mWindowMap中,鍵值為IWindow的Bp端。mWindowMap是整個系統(tǒng)所有窗口的一個全集。

2.4 removeWindow

void removeWindow(Session session, IWindow client) {synchronized (mGlobalLock) {//獲取WindowStateWindowState win = windowForClientLocked(session, client, false);if (win != null) {//執(zhí)行刪除win.removeIfPossible();return;}// Remove embedded window map if the token belongs to an embedded windowmEmbeddedWindowController.remove(client);}}

win.removeIfPossible方法和它的名字一樣, 并不是直接執(zhí)行刪除操作,而是進(jìn)行多個條件判斷過濾,滿足其中一個條件就會return,推遲刪除操作。比如View正在運行一個動畫,這是就會推遲刪除操作直到動畫完成。然后調(diào)用removeImmediately方法。

3. 事件派發(fā)

EventHub:
1.使用inotify監(jiān)聽輸入設(shè)備的添加和移除;
2.使用epoll機制監(jiān)聽輸入設(shè)備的數(shù)據(jù)變化;
3.讀取設(shè)備文件數(shù)據(jù);
4.將原始數(shù)據(jù)返回給InputReader;

InputReader:不斷讀取由EventHub監(jiān)聽到的input事件,將多個事件組合成一個可供上層消費的事件(比如將一組觸摸事件合并成一個action_down事件),然后交給InputDispatcher進(jìn)行事件分發(fā);

InputDispatcher:拿到InputReader獲取的事件后,對事件進(jìn)行包裝,尋找并分發(fā)到目標(biāo)窗口,對應(yīng)inputChannel輸入;

Android系統(tǒng)是由事件驅(qū)動的,而input是常見的事件之一,點擊、滑動、長按等操作,都屬于input事件,核心類就是InputReader和InputDispatcher;

解釋: ViewRootImpl#WindowInputEventReceiver:從下面源碼可以看出,此類用于InputChannel輸入事件接收以及處理輸入事件分發(fā);

    final class WindowInputEventReceiver extends InputEventReceiver {//構(gòu)造方法,接受inputchannel輸入事件public WindowInputEventReceiver(InputChannel inputChannel, Looper looper) {super(inputChannel, looper);}@Overridepublic void onInputEvent(InputEvent event) {...if (processedEvents != null) {if (processedEvents.isEmpty()) {// InputEvent consumed by mInputCompatProcessorfinishInputEvent(event, true);} else {for (int i = 0; i < processedEvents.size(); i++) {//對輸入事件進(jìn)行分發(fā)enqueueInputEvent(processedEvents.get(i), this,QueuedInputEvent.FLAG_MODIFIED_FOR_COMPATIBILITY, true);}}} else {enqueueInputEvent(event, this, 0, true);}}

ViewRootImpl#InputStage:抽象類,主要用來將事件的處理分成若干個階段(stage)進(jìn)行,如果該事件沒有被處理,則該stage就會調(diào)用onProcess方法處理,然后調(diào)用forward執(zhí)行下一個stage的處理;如果該事件被標(biāo)識為處理則直接調(diào)用forward,執(zhí)行下一個stage的處理,直到?jīng)]有下一個stage;

ViewPostImeInputStage:InputStage的子類,將輸入事件傳遞到上層視圖;至此,輸入事件一層層向上傳遞,最終交由具體的view進(jìn)行處理;

如果你還沒有掌握Framework,現(xiàn)在想要在最短的時間里吃透它,可以參考一下《Android Framework核心知識點》,里面內(nèi)容包含了:Init、Zygote、SystemServer、Binder、Handler、AMS、PMS、Launcher……等知識點記錄。

《Framework 核心知識點匯總手冊》:https://qr18.cn/AQpN4J

Handler 機制實現(xiàn)原理部分:
1.宏觀理論分析與Message源碼分析
2.MessageQueue的源碼分析
3.Looper的源碼分析
4.handler的源碼分析
5.總結(jié)

Binder 原理:
1.學(xué)習(xí)Binder前必須要了解的知識點
2.ServiceManager中的Binder機制
3.系統(tǒng)服務(wù)的注冊過程
4.ServiceManager的啟動過程
5.系統(tǒng)服務(wù)的獲取過程
6.Java Binder的初始化
7.Java Binder中系統(tǒng)服務(wù)的注冊過程

Zygote :

  1. Android系統(tǒng)的啟動過程及Zygote的啟動過程
  2. 應(yīng)用進(jìn)程的啟動過程

AMS源碼分析?:

  1. Activity生命周期管理
  2. onActivityResult執(zhí)行過程
  3. AMS中Activity棧管理詳解

深入PMS源碼:

1.PMS的啟動過程和執(zhí)行流程
2.APK的安裝和卸載源碼分析
3.PMS中intent-filter的匹配架構(gòu)

WMS:
1.WMS的誕生
2.WMS的重要成員和Window的添加過程
3.Window的刪除過程

《Android Framework學(xué)習(xí)手冊》:https://qr18.cn/AQpN4J

  1. 開機Init 進(jìn)程
  2. 開機啟動 Zygote 進(jìn)程
  3. 開機啟動 SystemServer 進(jìn)程
  4. Binder 驅(qū)動
  5. AMS 的啟動過程
  6. PMS 的啟動過程
  7. Launcher 的啟動過程
  8. Android 四大組件
  9. Android 系統(tǒng)服務(wù) - Input 事件的分發(fā)過程
  10. Android 底層渲染 - 屏幕刷新機制源碼分析
  11. Android 源碼分析實戰(zhàn)

http://aloenet.com.cn/news/47864.html

相關(guān)文章:

  • 網(wǎng)站新聞專題怎么做上海優(yōu)化關(guān)鍵詞的公司
  • 網(wǎng)站建設(shè)合同付款比例賬號權(quán)重查詢
  • 廣州哪里做網(wǎng)站品牌營銷策劃方案怎么做
  • 網(wǎng)站建設(shè)分金手指排名四私域流量和裂變營銷
  • 徐州企業(yè)網(wǎng)站排名優(yōu)化外貿(mào)網(wǎng)站建設(shè)報價
  • 怎么創(chuàng)建一個博客網(wǎng)站嗎cba最新積分榜
  • 網(wǎng)站建設(shè)設(shè)計案例網(wǎng)站logo實驗報告教育培訓(xùn)機構(gòu)營銷方案
  • 網(wǎng)站制作眼寫軟文的app
  • python做網(wǎng)站還是java東莞seo軟件
  • 哪里有網(wǎng)站開發(fā)公司媒體推廣
  • 怎么給自己的網(wǎng)站做seo百度賬號查詢
  • 室內(nèi)在線設(shè)計網(wǎng)站網(wǎng)站推廣手段
  • 湖北省建設(shè)廳造價官方網(wǎng)站網(wǎng)站seo優(yōu)化總結(jié)
  • 太原建網(wǎng)站的公司深圳搜索排名優(yōu)化
  • 國家城鄉(xiāng)建設(shè)部投訴網(wǎng)站福州網(wǎng)站開發(fā)公司
  • 網(wǎng)站安全狗 攔截301網(wǎng)絡(luò)推廣公司哪家做得好
  • 0基礎(chǔ)的怎么轉(zhuǎn)行互聯(lián)網(wǎng)太原seo排名優(yōu)化公司
  • 土豆做視頻在線觀看網(wǎng)站網(wǎng)絡(luò)營銷策劃包括哪些內(nèi)容
  • 電子商務(wù)概念seo關(guān)鍵詞有話要多少錢
  • 如何做電商網(wǎng)站成都seo的方法
  • 鄭州的做網(wǎng)站公司有哪些好搜搜索
  • 做網(wǎng)站即墨鄭州競價托管公司哪家好
  • 賀卡制作優(yōu)化資訊
  • 榆次建設(shè)局網(wǎng)站普通話手抄報簡單又漂亮
  • 個人網(wǎng)站建站指南他達(dá)那非片能延時多久
  • php做網(wǎng)站的好處寧波seo外包推廣渠道
  • 購物網(wǎng)站圖片的放大怎么做的seo網(wǎng)絡(luò)推廣教程
  • html5網(wǎng)站下載建站模板哪個好
  • 網(wǎng)絡(luò)營銷應(yīng)該這樣做seo優(yōu)化交流
  • 保定企業(yè)網(wǎng)站制作電商數(shù)據(jù)統(tǒng)計網(wǎng)站