앱이 최초로 실행되었는지를 확인하고, 그 경우에 따라 처리를 하는 경우가 있다. 아래와 같이 처리하면 된다. Preference 에 값을 넣어 놓고 그것으로 비교하면 된다.


enum class AppStart {
    FIRST_TIME,         // 최초 실행
    FIRST_TIME_VERSION, // 업데이트 하고 최초 실행
    NORMAL,             // 일반적 실행
    ERROR               // 오류
}

object AppUtils {

    fun checkFirstRun(): AppStart {

        val currentVersion = BuildConfig.VERSION_CODE
        val doesnt_exist: Int = -1;
        val savedVersionCode = PreferenceHelper.defaultPrefs()["PREF_VERSION_CODE", doesnt_exist] // 본인이 사용하고 있는 Preference Uitlity
        PreferenceHelper.defaultPrefs()["PREF_VERSION_CODE"] = currentVersion

        return when {
            currentVersion == savedVersionCode -> AppStart.NORMAL
            savedVersionCode == doesnt_exist -> AppStart.FIRST_TIME
            currentVersion > savedVersionCode -> AppStart.FIRST_TIME_VERSION
            else -> AppStart.ERROR
        }
    }
}

사용할때는 단순히 호출해서 사용하면 된다.


if (AppUtils.checkFirstRun() == AppStart.FIRST_TIME) {
    // 최초 실행
} else if (AppUtils.checkFirstRun() == AppStart.FIRST_TIME_VERSION) {
    // 업데이트 하고 최초 실행
}