Application 을 상속받는 클래스에서
ActivityLifecycleCallbacks 프로퍼티 생성 후
onCreate() 에서 registerActivityLifecycleCallbacks 함수의 파라미터로 해당 프로퍼티를 넘겨주면 activity life cycle 마다 해당 콜백이 불려진다.
현재 foreground activity에 접근하기 위한 코드는 다음과 같다.
Class MyApplication: Application() {
var currentActivity: Activity? = null
private val activityLifecycleCallbacks = object: ActivityLifecycleCallbacks {
override fun onActivityCreated(p0: Activity, p1: Bundle?) {
currentActivity = p0
}
override fun onActivityStarted(p0: Activity) {
currentActivity = p0
}
override fun onActivityResumed(p0: Activity) {
currentActivity = p0
}
override fun onActivityPaused(p0: Activity) {
}
override fun onActivityStopped(p0: Activity) {
}
override fun onActivitySaveInstanceState(p0: Activity, p1: Bundle) {
}
override fun onActivityDestroyed(p0: Activity) {
}
}
override fun onCreate() {
registerActivityLifecycleCallbacks(activityLifecycleCallbacks)
}
}
이후 코드 상에서 아래와 같이 currentActivity 에 접근 가능합니다.
(application as MyApplication).currentActivity