강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

KS J님의 프로필 이미지
KS J

작성한 질문수

모던 안드로이드 - Jetpack Compose 입문

수평 측정기 01 - ViewModel 작성

OnLifecycleEvent가 Deprecated 되었습니다

작성

·

1.9K

0

영상에서 LifecycleObserver을 구현하고 있는데 현재 어노테이션을 사용하는 것이 비활성화 되어서 어떻게 진행하면 좋을지 궁금합니다. DefaultLifecycleObserver을 구현해서 사용하는 것이 차선책일까요?

퀴즈

센서를 액티비티 라이프사이클에 맞춰 안전하게 등록/해제하기 위해 권장되는 패턴은 무엇일까요?

Activity의 onCreate/onDestroy에서 직접 관리

ViewModel에서 LifecycleObserver를 사용하여 관리

SensorManager 내부에서 자동으로 관리

Application 클래스에서 전역적으로 관리

답변 1

2

오준석님의 프로필 이미지
오준석
지식공유자

네. androidx.lifecycle:lifecycle-*:2.4.0 부터 DefaultLifecycleObserver 또는 LifecycleEventObserver를 사용해야 되는데요.

LifecycleEventObserver를 사용하여 수정된 코드는 다음과 같습니다. GitHub에도 반영하였습니다.

class MainViewModel(application: Application) : AndroidViewModel(application),
SensorEventListener, LifecycleEventObserver {

...

private fun registerSensor() {
sensorManager.registerListener(
this,
sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
SensorManager.SENSOR_DELAY_NORMAL
)
}

private fun unregisterSensor() {
sensorManager.unregisterListener(this)
}

...

override fun onStateChanged(source: LifecycleOwner, event: Lifecycle.Event) {
if (event == Lifecycle.Event.ON_RESUME) {
registerSensor()
} else if (event == Lifecycle.Event.ON_PAUSE) {
unregisterSensor()
}
}
}

 

 

KS J님의 프로필 이미지
KS J

작성한 질문수

질문하기