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 兜底处理库的实现原理。