우찬쓰 개발블로그
안드로이드 App이 Background 상태인지 체크 본문
반응형
앱을 개발하다보면 현재 앱이 Foreground 상태인지 Background 상태인지 체크해야 하는 상황이 온다.
예전에는 이러한 상태를 각 엑티비티 마다 체크하는 로직을 넣어서 종합하여 현재 앱이 백그라운드인지 포어그라운드 인지 결정해야 했는데
구글이 AAC 라이브러리를 발표하면서 훨씬 간단한 방법이 생겼다.
먼저 app.gradle에 라이브러리를 추가한다.
implementation 'android.arch.lifecycle:extensions:1.1.1'
그다음 구현해놓은 Application에 다음과 같은 코드를 추가한다.
class TestApplication: Application(), LifecycleObserver {
override fun onCreate() {
super.onCreate()
ProcessLifecycleOwner.get().lifecycle.addObserver(this)
}
@OnLifecycleEvent(Lifecycle.Event.ON_STOP)
fun onAppBackgrounded() {
System.out.println("check app ON_STOP!!!!!!!!!!!!!!!!!")
}
@OnLifecycleEvent(Lifecycle.Event.ON_START)
fun onAppForegrounded() {
System.out.println("check app ON_START!!!!!!!!!!!!!!!!!")
}
@OnLifecycleEvent(Lifecycle.Event.ON_CREATE)
fun onAppCreated() {
System.out.println("check app ON_CREATE!!!!!!!!!!!!!!!!!")
}
@OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
fun onAppResumed() {
System.out.println("check app ON_RESUME!!!!!!!!!!!!!!!!!")
}
@OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
fun onAppDestroyed() {
System.out.println("check app ON_DESTROY!!!!!!!!!!!!!!!!!")
}
@OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
fun onAppPaused() {
System.out.println("check app ON_PAUSE!!!!!!!!!!!!!!!!!")
}
@OnLifecycleEvent(Lifecycle.Event.ON_ANY)
fun onAppAny() {
System.out.println("check app ON_ANY!!!!!!!!!!!!!!!!!")
}
}
LifesycleObserver를 상속받아 onCreate에서 ProcessLifecycleOwner에 추가해주면 아래처럼 각 이벤트 어노테이션이 달린 메소드가 실행된다.
메소드 이름은 전혀 상관 없으므로 원하는 이름을 지정해서 쓰면 된다.
ON_ANY는 어떤 이벤트인지 상관 없이 모두 온다.
반응형
'안드로이드 > 안드로이드 개발' 카테고리의 다른 글
Viewpager 마지막 page 스크롤 효과 없애기 (0) | 2019.04.11 |
---|---|
Gradle에서 각 test,staging,real server url 세팅하기 (0) | 2019.04.10 |
data class로 Parcelable 만들기 (0) | 2019.04.01 |
안드로이드 백그라운드 서비스 만들기 (4) | 2019.04.01 |
안드로이드 간단한 달력 만들기 (12) | 2019.03.25 |
Comments