본문 바로가기
안드로이드

[Android] 어플 재시작 방법

by 코딩히어로 2022. 9. 12.
728x90

1


프로그램 개발을 하다 보면 사용자에 의해서 어플이 재시작될 수도 있지만

어떠한 경우에는 프로그램 자체적으로 어플을 다시 실행시켜야 하는 경우가 많이 있습니다

 

제 경우에는 Handler와 Thread를 많이 사용하는 프로그램에서 Activity가 종료될 때

초기 페이지로 가면서 실행된 Handler와 Thread를 전부 종료해야 하는 경우가 생겼고

onDestroy 등에서 실행된 것들을 전부 종료하기에는 리소스 낭비가 크다고 판단하여

뒤로 가기 버튼이 눌리는 순간 어플을 아예 새로 시작하는 방법을 구현하였습니다

 

먼저 사용자에 의해 뒤로 가기 버튼이 눌리는 경우 Activity에서는 onBackPressed를 호출합니다

@Override
public void onBackPressed() {
    super.onBackPressed();
}

많은 개발자들이 처음 격는 문제 중 하나는 onBackPressed에 코드를 구현하여도

자신이 만든 코드대로 동작하지 않고 백버튼을 누르면 Activity가 종료되는 경우가 있습니다

이러한 경우는 onBackPressed 내에 있는 super.onBackPressed() 구문이 문제가 됩니다

super를 통해 부모 Back키 구현 쪽에서 뒤로 가기 구문이 실행되는 것인데 이 구문을 지워주어야

원하는 onBackPressed를 만들 수 있습니다

@Override
public void onBackPressed() {
    PackageManager packageManager = getPackageManager();
    Intent intent = packageManager.getLaunchIntentForPackage(getPackageName());
    ComponentName componentName = intent.getComponent();
    Intent mainIntent = Intent.makeRestartActivityTask(componentName);
    startActivity(mainIntent);
    System.exit(0);
}

위 코드와 같이 구현하게 되면 뒤로가기 버튼을 누를 때마다

어플이 종료된 뒤에 다시 실행하게 됩니다

728x90
반응형

댓글