본문 바로가기

Android

[Android] 앱이 죽은 경우 스플래쉬부터 시작하기

앱이 크래쉬가 안 나면 좋겠지만, 그게 맘대로 되지 않는다.

앱이 죽은 경우 안드로이드 자체에서 앱을 자동으로 올려주기도 하지만, 스플래쉬를 거쳐 초기화하는 작업이 되지 않으면 동작에 문제가 생겨버려 작업하게 되었다.

RuntimeException을 받아 처리해 버린다.

UncaughtExceptionHandler

class UncaughtExceptionHandler(val context: Context) : Thread.UncaughtExceptionHandler {
    override fun uncaughtException(t: Thread, e: Throwable) {
    	// 에러 원인을 남기기 위해
        FirebaseCrashlytics.getInstance().recordException(e)

        try {
            val intent = Intent(context, ErrorActivity::class.java)
            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK)
            context.startActivity(intent)
        } catch (e: Exception) {
        }
        // 프로세스 종료
        exitProcess(2)
    }
}

BaseActivity

class BaseActivity : AppCompatActivity(){

	override fun onResume(){
		Thread.setDefaultUncaughtExceptionHandler(UncaughtExceptionHandler(this@BaseActivity))
	}

}

ErrorActivity

class ErrorActivity : BaseActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        // 대충 메시지 다이어로그 보여주고 확인 버튼 누르면 스플래쉬로 이동
        ...
            override fun onPositive(dialog: Dialog) {
                startActivity(Intent(this@ErrorActivity, SplashActivity::class.java))
            }
        ...
    }
}