Gemstone's Devlog

ViewModel 인스턴스가 액티비티 인스턴스에 대해 강한 참조를 갖는다면? 본문

Kotlin (Android)

ViewModel 인스턴스가 액티비티 인스턴스에 대해 강한 참조를 갖는다면?

Gemstone 2022. 1. 17. 22:26

장치 회전 시에 액티비티 인스턴스는 소멸되지만, ViewModel 인스턴스는 메모리에 남는다.

그런데 ViewModel 인스턴스가 액티비티 인스턴스에 대해 강한 참조를 가지면 다음 두 가지 문제가 생길 수 있다.

첫째, 액티비티 인스턴스가 메모리에서 제거되지 않아서 이 인스턴스가 사용하는 메모리가 유실된다.

둘째, ViewModel 인스턴스가 현재 사용되지 않는 과거 액티비티의 참조를 갖게 되어 ViewModel 인스턴스가 과거 액티비티의 뷰를 변경하려고 하면 IllegalStateException이 발생한다.