考察點
答題要點
整體流程,在應用端activity啟動的步驟
總結:
相關問題
答題要點
總結
**細節如圖32
activity之所以能顯示出來,最重要的一步就是viewrootimpl的建立,並由viewrootimpl全權負責decorview的繪製
viewrootimpl會在wms裡註冊乙個視窗,wms會統一管理所有視窗的大小,位置以及層級,在第一次繪製的時候,viewrootimpl會向wms申請乙個service用於繪製
繪製完成之後,su***ceflinger就會按照wms中提供的window層級、大小、位置來對su***ce進行合成,合成完畢之後就可以寫到螢幕的幀緩衝區顯示出來
如圖33
答題要點
ui執行緒的啟動流程,訊息迴圈是怎麼建立的
了解android的ui顯示原理,ui執行緒和u|體系之間是怎麼關聯的?
activity.runonuithread(runnable)與view.post(runnable)
view.post(runnable)
子執行緒重新整理ui的問題
結論3:activity的decorvie對應的viewrootlmpl是在主線程建立的
關於ui執行緒的三個結論
對view來說,ui執行緒就是viewrootlmpl建立的時候所在的執行緒
activity的decorview對應的viewrootlmpl是在主線程建立的
子執行緒重新整理ui可以麼?
可以,**如下
new thread()
}.start();
looper.prepare()與looper.preparemainlooper()的區別
總結
訊息迴圈時通過主線程的looper開啟的
考察點
service啟動過程中主要流程有哪些?
service啟動過程涉及哪些參與者,通訊過程是怎樣的?
**分析
主要的啟動流程
程序沒有啟動
啟動過程涉及哪些參與者,以及通訊過程
總結
考察點:
用法:圖43
總體流程
bindservice實現原理bindservice從應用端發到了ams, 在ams中處理函式就是bindservicelocked
首先來看一組資料結構
下面看具體流程
onrebind什麼時候呼叫
unbindservice實現
考察點
動態廣播的註冊原理
在ams端
廣播的傳送
廣播的接收
下面來看iintentreceiver的performreceive實現
總結
簡單總結下就是:
廣播的註冊
與動態廣播不同,靜態廣播是在清單檔案中註冊,安卓在啟動的時候,就會啟動pms服務,這個服務會掃瞄已經安裝的apk,解析mainfest檔案,當檢測到receiver時,會把它加到receiver列表中,靜態廣播就是在這個時候註冊到了pms中,當需要的時候,會從pms中查詢,如下圖, 圖56
廣播的傳送靜態廣播是序列分發的,如果程序沒有啟動,需要啟動程序,如果分發超時了,這個廣播就廢棄了 圖57
考察點
在看下面的圖,沒有使用到provider的binder物件,而是直接在應用程序裡建立了乙個provider例項,這樣應用使用provider進行增刪改查時就不需要進行跨程序通訊了
那麼該如何在應用程序中建立乙個provider例項呢,首先需要provider所在應用的uid和呼叫者的uid相同,另外需要滿足下面兩個條件之一
總結先說provider程序沒啟動的情況:
再來討論provider程序已經啟動的情況
四大元件(四) content provider
content provider相當於是程式與程式之間的介面。讓原本不可能通訊的程式,通過內容提供者這個橋梁變得可以通訊。定義乙個類 繼承 contentprovider public class backdoor extends contentprovider 註冊contentprovider ...
android 四大元件
1.activity 2.service 3.contentprovider 應用中的資料,對外進行共享,其它應用可以通過內容提供者,可以訪問到你應用中的資料,對資料進行增刪改查 1 對不同的資料格式,統一了檔案格式和資料訪問api 2 內容提供者要繼承contentprovider類 3 在清單檔...
Android 四大元件
activity intent receiver service content provider 並不是每乙個android應用程式都需要這四種構造塊,這不是必須的。當我們明確了我們的應用需要哪些構造塊後,我們就需要在androidmanifest.xml中登記這些構造塊的清單。這個配置檔案用於定...