728x90
프로그램 개발을 하다 보면 사용자에 의해서 어플이 재시작될 수도 있지만
어떠한 경우에는 프로그램 자체적으로 어플을 다시 실행시켜야 하는 경우가 많이 있습니다
제 경우에는 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
반응형
'안드로이드' 카테고리의 다른 글
[Android] android:exported 스토어 업로드 에러 해결 (4) | 2022.09.14 |
---|---|
[Android] Bitmap 이미지 두 장 합치기 (2) | 2022.09.13 |
[Android] IllegalThreadStateException 에러 해결 (5) | 2022.09.06 |
[Android] 안드로이드 PC RS232 사용법 (CD-RK3288-01) (2) | 2022.09.06 |
[Android] FCM 알림 구현 (2) | 2022.08.31 |
댓글