안드로이드 앱 개발기 #15 - 앱 재시작 코드
로그아웃이나 언어 변경 등으로 인해 저장되었던 자료들을 리셋하고 앱을 재시작해야 하는 경우가 있습니다. 방법을 알아보니 여러가지 코드들이 있어 어떤 것을 사용하는 게 좋을지 혼란스러웠습니다. 여러 자료들을 검토하고 종합하여 아래와 같이 사용해 보기로 하였습니다.
앱을 재시작하는 Activity 클래스의 확장 함수 restartApp()
아래 함수에는 앱을 재시작하는 코드가 구현되어 있습니다.
fun Activity.restartApp() {
finishAffinity(this)
startActivity(packageManager.getLaunchIntentForPackage(packageName))
Runtime.getRuntime().exit(0)
}
finishAffinity 함수를 호출하여 현재 태스크의 모든 액티비티들을 종료 시키구요. startActivity 함수를 호출하여 앱이 처음 시작할 액티비티를 실행시킵니다. 처음 2줄만으로도 앱 재시작은 가능한데요. 부자연스러운 애니메이션이 보였습니다. 이것은 Runtime.getRuntime().exit(0) 함수를 실행하여 실행 중인 자바 가상 머신을 종료하는 것으로 해결하였습니다.
지난 안드로이드 앱 개발기
- #14 - Fragment 사용시 간혹 발생할 수 있는 Fragment not attached to Activity 문제
- #13 - Retrofit2 활용 서버로부터 받을 데이터 유형 JsonElement (JSONObject 사용 불가)
- #12 - Glide 활용하여 이미지 다운로드 받는 코드
- #11 - 처리할 수 없는 예외/크래쉬 발생시 앱 재시작하기
- #10 - 안드로이드 스튜디오 업그레이드 후 단축키가 안되면? (맥북)
- #9 - LiveData 객체에 동일 데이터 설정하면 observer 실행되는지 확인 목적의 샘플 프로젝트
- #8 - 안드로이드 스튜디오에서 빌드시 발생하는 Build Tools revision 31.0.0 오류
- #7 - 'UGC(사용자 생성 콘텐츠) 정책 미준수'로 심사 거절
- #6 - 뷰에 역마진 적용 불가시 translationX, translationY 속성 사용하기
- #5 - 프로젝트 생성 후 빌드시 발생 오류: The minCompileSdk (31) specified in a dependency's AAR metadata
- #4 - 프로젝트 생성 후 빌드시 발생 오류: The minCompileSdk (31) specified in a dependency's AAR metadata
- #3 - 무한 롤링 배너 만드는 법을 찾았으나, 높이를 wrap_content로 지정이 안 먹히는 문제점이...
- #2 - setContentView 메소드의 파라메터를 변경하지 않아서 발생한 화면 오류
- #1 - 페이스북 로그인 연동시 발생했던 문제들
[광고] STEEM 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.