겨울팥죽 여름빙수
article thumbnail

 유저가 뒤로가기 버튼을 두번 연속으로 눌러 앱을 종료시키거나,

업데이트가 후, 재시작이 필요한 경우가 있다.

 

1. 앱 종료

 

public static void EndApp()
{
#if UNITY_EDITOR
    UnityEditor.EditorApplication.isPlaying = false;
#else
   UnityEngine.Application.Quit();
#endif
}

 

 앱 종료는 에디터 상태인 경우와 앱 상태인 경우가 조금 다르다. 방법은 위와 같이, 에디터의 경우엔 UnityEditor클래스를 이용하고, 앱은 UnityEngine.Application클래스를 이용한다.

 

2. 앱 재시작(안드로이드)

 

if (Application.isEditor)
{
    jdUtil.EndApp();
    return;
}


using (var unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
{
    const int kIntent_FLAG_ACTIVITY_CLEAR_TASK = 0x00008000;
    const int kIntent_FLAG_ACTIVITY_NEW_TASK = 0x10000000;

    var currentActivity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
    var pm = currentActivity.Call<AndroidJavaObject>("getPackageManager");
    var intent = pm.Call<AndroidJavaObject>("getLaunchIntentForPackage", Application.identifier);

    intent.Call<AndroidJavaObject>("setFlags", kIntent_FLAG_ACTIVITY_NEW_TASK | kIntent_FLAG_ACTIVITY_CLEAR_TASK);
    currentActivity.Call("startActivity", intent);
    currentActivity.Call("finish");
    var process = new AndroidJavaClass("android.os.Process");
    int pid = process.CallStatic<int>("myPid");
    process.CallStatic("killProcess", pid);
}

 

  재시작의 경우, 알람 기능을 이용하는 것이다. 안드로이드 intent를 이용해 앱을 종료시키고, 일정시간 후 앱을 다시 실행시키는 원리이다. 이 경우는 앱을 업데이트 받은 후 재시작 해야하는 경우에 하는 방법이고, 그 외에는 재시작 루틴을 직접 만드는 것이 좋다. 예를 들어,

 

1. 맨 처음 Scene(나같은 경우 LogoScene)으로 돌아가면서, 기존 메모리 자원들을 모두 날린다.

 

2. LogoScene 부터 시작 루틴 실행.

 

 

이세계 용병제국

profile

겨울팥죽 여름빙수

@여름빙수

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!