앱이 크래쉬가 안 나면 좋겠지만, 그게 맘대로 되지 않는다.
앱이 죽은 경우 안드로이드 자체에서 앱을 자동으로 올려주기도 하지만, 스플래쉬를 거쳐 초기화하는 작업이 되지 않으면 동작에 문제가 생겨버려 작업하게 되었다.
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))
}
...
}
}
'Android' 카테고리의 다른 글
[Android] Material Indeterminate Progress Drawable 커스텀 (0) | 2022.02.24 |
---|---|
[Android] 지난 주 날짜 가지고 오기 (0) | 2021.08.03 |
[Android] isEnabled 로 ScrollView 스크롤 On / Off 시키기 (0) | 2021.07.08 |
[Android] Collapse와 Expand 상태에서 힌트 문자가 다른 TextInputLayout (0) | 2021.02.18 |
[Android] OPEN_DOCUMENT로 가져온 Uri를 Multipart.Part로 만들기(Retrofit2 파일 업로드) (2) | 2020.10.14 |