안녕하세요. 이번 포스팅에서는 현재 컨텍스트에서 앱을 재시작하는 방법에 대해 알아보겠습니다.
보통 데이터베이스를 롤백시키거나 언어설정을 변경하는 등 어플리케이션의 환경을 변경할 때 앱을 재시작하는 경우가 많습니다. 이럴 때 유용한 코드를 소개드리겠습니다.
원리는 현재 프로세스를 종료시키면서 앱의 패키지 컴포넌트를 Intent의 makeRestartActivityTask 메서드의 파라미터로 호출해 다시 실행시키는 방식입니다.
작성코드👀
Kotlin
private fun restartApplication(mContext: Context) {
val packageManager: PackageManager = mContext.packageManager
val intent = packageManager.getLaunchIntentForPackage(mContext.packageName)
val componentName = intent!!.component
val mainIntent = Intent.makeRestartActivityTask(componentName)
mContext.startActivity(mainIntent)
exitProcess(0)
}
Java
private void restartApplication(Context mContext) {
PackageManager packageManager = mContext.getPackageManager();
Intent intent = packageManager.getLaunchIntentForPackage(mContext.getPackageName());
ComponentName componentName = intent.getComponent();
Intent mainIntent = Intent.makeRestartActivityTask(componentName);
mContext.startActivity(mainIntent);
System.exit(0);
}
감사합니다.
예제소스
https://github.com/tekken5953/RestartApplicationExam
'Android' 카테고리의 다른 글
[안드로이드] Transition - 자연스러운 화면 연결 애니메이션 (0) | 2023.02.28 |
---|---|
[안드로이드] 진동 커스텀하기 - VibratorManager (0) | 2023.02.24 |
[안드로이드] 에러 'Inconsistency detected. Invalid view holder adapter positionViewHolder' 해결 (0) | 2023.02.02 |
[안드로이드] WifiManager로 연결 가능한 와이파이 검색하기 (0) | 2023.01.30 |
[안드로이드] savedInstanceState 는 왜 있는걸까? (0) | 2023.01.06 |