Android如何檢查線程有耗時任務

framework:

WatchDog

  • 1.檢查是否發(fā)生了死鎖
  • 2.線程是否被任務block


    image.png

以AMS 為例查看源碼:startOtherServices
檢測線程死鎖有個很好的方法:
就是一直去嘗試獲取當前線程的鎖,如果一直拿不到那就有可能死鎖了

BlockCanary

其實是利用looper機制,如下:

public static void loop() {
 final MessageQueue queue = me.mQueue;
    for (;;) {
     //這里可以手動的設置一個mLogging
     final Printer logging = me.mLogging;
       if (logging != null) {
                logging.println(">>>>> Dispatching to " + msg.target + " " +
                        msg.callback + ": " + msg.what);
        }
        //分發(fā)消息
         msg.target.dispatchMessage(msg);
        if (logging != null) {
                logging.println("<<<<< Finished to " + msg.target + " " + msg.callback);
        }
      }
  }

其實就是手動給設置一個mLogging,然后去分別去計算
Dispatching 到 Finished 的時間 ,來判斷當前handler線程執(zhí)行的時間。
可以通過如下 方式,就可以更加優(yōu)雅得計算當前系統(tǒng)任務的耗時時間了。

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        getMainLooper().setMessageLogging(new Printer() {
        @Override
        public void println(String x) {
       //">>>>> Dispatching to " + msg.target + " " +msg.callback + ": " + msg.what
       //可以去計算當前花費的時間 來判斷一個任務(handleMessage(Message msg))是的執(zhí)行時間
       // "<<<<< Finished to " + msg.target + " " + msg.callback
        }
  });
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 卡頓是非常直觀的用戶體驗,它的特點是:產生原因錯綜復雜,線上問題難以復現(xiàn)。基于這個特點,卡頓優(yōu)化主要是三方面工作:...
    Stan_Z閱讀 17,136評論 6 30
  • Android系統(tǒng)運行以后,System_server中可能有成百上千個線程在運行,各種服務之間調用很頻繁,也很復...
    Nipuream閱讀 1,113評論 0 1
  • 第5章 多線程編程 5.1 線程基礎 5.1.1 如何創(chuàng)建線程 在java要創(chuàng)建線程,一般有==兩種方式==:1)...
    AndroidMaster閱讀 1,921評論 0 11
  • 久違的晴天,家長會。 家長大會開好到教室時,離放學已經沒多少時間了。班主任說已經安排了三個家長分享經驗。 放學鈴聲...
    飄雪兒5閱讀 7,835評論 16 22
  • 創(chuàng)業(yè)是很多人的夢想,多少人為了理想和不甘選擇了創(chuàng)業(yè)來實現(xiàn)自我價值,我就是其中一個。 創(chuàng)業(yè)后,我由女人變成了超人,什...
    亦寶寶閱讀 2,012評論 4 1

友情鏈接更多精彩內容