个人技术分享

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)
            })
        }
    }