티스토리 뷰

우리가 앱을 만들때 백그라운드에 내렸다가 올라왔을때만 체크해서 개발을 하여야 할 경우가 있습니다.

예를 들면 버전체크 같은거죠.

이러한 경우를 체크하기 위해서 ActivityLifecycleCallbacks를 이용하여 보겠습니다.

 

최소 API는 14입니다.

 

이안에 func이 많이 존재하는데요 우리가 사용할 부분은 아주 조금입니다.

enum class AppStatus {
    BACKGROUND, RETURN_TO_FOREGROUND, FOREGROUND
}

class AppLifecycle : Application.ActivityLifecycleCallbacks {

    var appStatus = AppStatus.BACKGROUND
    private var running = 0

    override fun onActivityPaused(activity: Activity?) {
		// Not Use
    }

    override fun onActivityResumed(activity: Activity?) {
		// Not Use
    }

    override fun onActivityStarted(activity: Activity?) {
        if (++running == 1) {
            appStatus = AppStatus.RETURN_TO_FOREGROUND
        } else if (running > 1) {
            appStatus = AppStatus.FOREGROUND
        }
    }

    override fun onActivityDestroyed(activity: Activity?) {
		// Not Use
    }

    override fun onActivitySaveInstanceState(activity: Activity?, bundle: Bundle?) {
		// Not Use
    }

    override fun onActivityStopped(activity: Activity?) {
        if (--running == 0) {
            appStatus = AppStatus.BACKGROUND
        }
    }

    override fun onActivityCreated(p0: Activity?, p1: Bundle?) {
		// Not Use
    }
}

그리고 ApplicationClass에 등록하여 줍니다.

override fun onCreate() {
    super.onCreate()
    
    val lifeCycle = AppLifecycle()
    registerActivityLifecycleCallbacks(lifeCycle)
}

Activity에 하나씩 코드를 넣어서 처리하여야 할 부분들을 하나의 callback에서 받아서 처리가 가능합니다.

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함