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 兜底處理庫的實現原理。