Android判斷當前是否在主線程


Android開發中, 有時需要判斷當前線程到底是主線程, 還是子線程, 例如: 我們在自定義View時, 想要讓View重繪, 需要先判斷當前線程到底是不是主線程, 然后根據判斷結果來決定到底是調用 invalidate() 還是 postInvalidate() 方法. 如果當前是主線程, 就調用 invalidate() 方法; 而如果當前是子線程, 就調用 postInvalidate() 方法, 注意: 子線程中不能調用 invalidate() 方法, 否則就會報異常, 提示我們不能在子線程中更新UI。

 

那么, 我們如何判斷當前線程到底是主線程, 還是子線程呢? 答案是: 可以借助於 Looper. 代碼如下:

public boolean isMainThread() { return Looper.getMainLooper() == Looper.myLooper(); }

或者

public boolean isMainThread() { return Looper.getMainLooper().getThread() == Thread.currentThread(); }

或者

public boolean isMainThread() { return Looper.getMainLooper().getThread().getId() == Thread.currentThread().getId(); }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM