마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드 App 재시작 에 대해 질문드립니다.

+1 추천
public void restart(){

    Intent i = getBaseContext().getPackageManager().
            getLaunchIntentForPackage(getBaseContext().getPackageName());
    i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(i);
}
finish();

restart();      //앱 재시작

 

저는 App을 백그라운드까지 종료시켰다가 다시 시작을 하는 것을 원하는데

저런 경우에는 백그라운드까지 종료를 안시키고 재시작을 합니다.

 

혹시 백그라운드까지 종료시켰다가 App을 재시작하는 방법이 있나요??

zenojm (2,840 포인트) 님이 2018년 1월 5일 질문

1개의 답변

0 추천

우선, 백그라운드라는게 '서비스'를 이야기하는건지 모르겠네요.

서비스라고 가정하고 두가지 방법이 있습니다.

1. Activity를 재실행 하기 전에 stopService()로 서비스를 명시적으로 종료 후 Activity 재실행

2. System.exit()으로 process 강제 종료 후 알람 서비스에 의존해서 activity 재실행 (구조적으로 좋지는 않음)

Intent mStartActivity = new Intent(context, StartActivity.class);
int mPendingIntentId = 123456;
PendingIntent mPendingIntent = PendingIntent.getActivity(context, mPendingIntentId,    mStartActivity, PendingIntent.FLAG_CANCEL_CURRENT);
AlarmManager mgr = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
mgr.set(AlarmManager.RTC, System.currentTimeMillis() + 100, mPendingIntent);
System.exit(0);

 

디자이너정 (42,810 포인트) 님이 2018년 1월 7일 답변
답변 주셔서 감사합니다.
pendingIntent를 사용하지 않고 다른 방법으로 구현했습니다.
다음은 아래와 같습니다.

    public void restart(){

        Intent i = getBaseContext().getPackageManager().
                getLaunchIntentForPackage(getBaseContext().getPackageName());
        i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);  
        i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(i);

    }
...