Android遇到未处理的异常时干掉自己然后重新启动
- 安卓主线程遇到异常会死掉表现为直接闪退,
- 如果只是添加了全局异常处理,主线程异常会表现为卡死
- 此时则需要对活动进行重启处理*
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
var exceptionCount = intent.getIntExtra("count", 0)
Log.d(TAG, "onCreate: exceptionCount: $exceptionCount")
Thread.setDefaultUncaughtExceptionHandler { t, e ->
Log.e(TAG, "onCreate: TestActivity Uncaught exception at thread $t,\n${e.message}")
exceptionCount++
finish()
startActivity(Intent(this, TestActivity::class.java).apply {
putExtra("count", exceptionCount)
})
}
}