🍰 Android 🍭/🛠 개발
[AOS] Check App Status (Background or Foreground)
벌꿀오소리🦡
2023. 6. 30. 15:18
반응형
👮🏻♀️
앱에서 홈 진입했다가 다시 진입 시에 사용자 인증을 안하네요? 보안이 너무 약한거 아닌가요?
네...? 네... 보안 강화하겠습니다... 😭
🐶
앱 상태가 Background인지 Foreground인지 상태를 체크하여 각각의 상태에 따른 action을 구현하는 방법은 2가지가 있다.
Observer를 생성하고, Androidx.lifecycle 라이브러리를 implementation하여 processLifecycleOwner를 이용한 방법과,
간단하게 ActivityManager의 RunningAppProcessInfo 값을 이용한 방법이 있다.
ProcessLifecycleOwner
1. implementation for ProcessLifecycleOwner
dependencies {
...
implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
implementation "android.arch.lifecycle:extensions:1.1.1"
implementation 'android.arch.lifecycle:common:1.1.1'
...
}
2. Observer 클래스 생성하기
class OnAppObserver:LifecycleObserver {
@OnLifecycleEvent(Lifecycle.Event.ON_START)
fun onStart() {
// to do when app is in foreground
}
@OnLifecycleEvent(Lifecycle.Event.ON_STOP)
fun onStop() {
// to do when app is in background
}
}
3. Observer 설정
class MainApplication : Application() {
override fun onCreate() {
super.onCreate()
ProcessLifecycleOwner.get().lifecycle.addObserver(OnAppObserver())
...
}
}
ActivityManager.RunningAppProcessInfo
override fun onStop() {
super.onStop()
val processInfo = RunningAppProcessInfo()
ActivityManager.getMyMemoryState(processInfo)
if (processInfo.importance != RunningAppProcessInfo.IMPORTANCE_FOREGROUND) {
// to do when app is in background
}
}
위 코드는 onCreate()에 구현하면 항상 Foreground 상태로 체크되기 때문에, 앱이 background 상태로 진행될 때 호출되는 onStop() 함수를 override하여 구현해주었다.
반응형