Android 主動 try-catch 主線程的 Exception

android.os.Handler(android.os.Looper.getMainLooper()).post(object : Runnable {
    override fun run() {
        while (true) {
            try {
                android.os.Looper.loop()
            } catch (e: Throwable) {
                android.util.Log.e(TAG,"Looper異常:",e)
            }
        }
    }
})

當調用上述代碼之後,當處理到我們主動 post 的 message,這個時候就會因爲 Looper.loop() 使得主線程對於後續的 message 的處理都約束在了當前代碼塊。

然後因爲外層有 try-catch ,所以就相當於主線程的都被我們人爲的 try-catch 住了。

上述處理,其實就是一些 Exception 兜底處理庫的實現原理。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章