네, 있습니다. 해당 기능을 사용하시려면 Android Architecture Component를 사용하셔야 합니다.
https://developer.android.com/reference/androidx/lifecycle/ProcessLifecycleOwner
ProcessLifecycleOwner 에 콜백을 달아주면 됩니다.
여기 블로그에 예제가 있습니다.
https://medium.com/trendyol-tech/android-architecture-components-processlifecycleowner-26aa905d4bc5
class ForegroundBackgroundListener : LifecycleObserver {
@OnLifecycleEvent(Lifecycle.Event.ON_CREATE)
fun createSomething() {
Log.v("ProcessLog", "Lifecycle.Event.ON_CREATE")
}
@OnLifecycleEvent(Lifecycle.Event.ON_START)
fun startSomething() {
Log.v("ProcessLog", "Lifecycle.Event.ON_START")
}
@OnLifecycleEvent(Lifecycle.Event.ON_STOP)
fun stopSomething() {
Log.v("ProcessLog", "Lifecycle.Event.ON_STOP")
}
}
해당 이벤트들은 앱 전역적인 이벤트이기 때문에 한번씩만 발생합니다. 따라서 앱이 백그라운드인지 포그라운드인지 쉽게 찾아낼 수 있습니다.
만약 액티비티 단위로 체크를 하고 싶으시다면 https://developer.android.com/topic/libraries/architecture/lifecycle
를 사용하시면 되구요. 그냥 라이브러리 추가하고 싶지 않으시면 BaseActivty 를 만드신 다음 onStop, onStart를 오버라이드 하시고 필요한 코드를 넣으신 다음, 모든 액티비티에서 상속을 받으면 됩니다.
프레그먼트가 없고 액티비티만 존재한다면 ActivityLifecycleCallback가 제일 적합해 보입니다.
https://developer.android.com/reference/android/app/Application.ActivityLifecycleCallbacks
사용법들은 다 심플합니다. 안드로이드 문서나 구글에서 찾아보시면 됩니다.
도움이 되시길.