[英]When is a Handler associated to a looper?
似乎只是調用 new Handler() 將處理程序與當前線程的循環器相關聯,而沒有將任何線程特定的 arguments 傳遞給構造函數。
但是,它如何識別當前線程是什么?
通過調用Thread.currentThread()
static 方法
為什么在特定方法(onLooperPrepared()、onCreate())中調用 new Handler() 是強制性的?
這實際上不是強制性的,具體取決於您希望處理程序執行的任務。
但一般來說,Handler 需要 Looper 來處理消息。
但是,它如何識別當前線程是什么?
如果您深入調用new Handler()
,您將看到源代碼,我將向您展示:
紅色矩形顯示您在new Handler
時需要Looper
。
僅當您不在 UI 線程中調用new Handler
或者您沒有在工作線程中調用Looper.prepare()
時,才會出現mLooper==null
的情況。
此外,您可以明顯地將處理程序與當前線程的循環器相關聯,請參閱在 UI 線程上定義處理程序,如handler = new Handler(Looper.getMainLooper())
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.