ActivityThread繫結looper思考

2021-07-06 06:29:16 字數 642 閱讀 7138

一、activitythread繫結looper

在activitythread中looper.preparemainlooper();將主線程初始化為乙個looper主線程。這時候我們的主線程就成了乙個就是迴圈

工作的主線程。

二、作用與意義:

在程式開發中,我們經常會需要乙個執行緒不斷迴圈,一旦有新任務則執行,執行完就繼續等待下乙個任務,這就是我們looper執行緒作

用。三、根據查閱原始碼得出個人小結:

looper中有個prepare(boolean b)的方法,傳參true表示初始化乙個可以被可以呼叫looper.quit()在quit()裡面傳乙個引數true,

呼叫messagequeue訊息佇列類中通過物件呼叫quit(boolean safe)方法,執行removeallfuturemessageslocked();方法和

nativewake(mptr);結束looper死迴圈。

相反,activity的主線程初始化looper時調prepare(boolean b)傳了乙個false進去,根據以上邏輯是,不能結束looper死迴圈的,如

果嘗試結束,他會拋乙個異常"main thread not allowed to quit." 即主線程無法退出quit迴圈,

五、資料查閱檢視跟蹤

ActivityThread執行框架

在分析中,我們可以看到真正對應應用程序的不是 而是activitythread 我們從實際的應用堆疊可以看到 start.main zygoteinit.main zygoteinit methodandargscall.run method.invoke method.invokenative a...

DropDownList 綁值問題

需要一年的時間,如果資歷不夠的話,需要的時間更久才能入門 我現在就是c 轉c 不過只會皮毛呵呵!這是我 也有幾個是用c 寫的軟體 用什麼語言不重要,不是必須要轉的話還是繼續c 好了 有計算機的思想,能學號c 學c 不難 有人跟我說過,其實c 非常的簡單,c 也就那幾個關鍵字 語法 類,比c 少多了,...

繫結事件和解綁事件

繫結事件 1.物件.on 事件型別 事件處理函式 物件 on 事件型別 事件處理函式 2.物件.addeventlistener 事件型別 事件處理函式 false 火狐 谷歌 ie11支援 ie8 不支援 3.物件.attachevent on 事件型別,事件處理函式 火狐 谷歌 ie11不支援 ...