domino8788 / SKHUMap

SKHU MAP
0 stars 0 forks source link

Fragment 재생성시 기존 데이터 표시 버그 #159

Closed domino8788 closed 4 years ago

domino8788 commented 4 years ago

branch : feature/facility_info 6afe5491 커밋에서 #158의 프래그먼트를 표시할 때 매번 새로 Fragment를 생성했음에도 불구하고 재생성 이전의 기존 데이터가 표시된 후 새로 표시할 데이터가 중첩되는 버그가 발생하고 있다.

domino8788 commented 4 years ago

디버깅 결과 기존의 데이터가 남아있는게 아닌 observer 가 중복 호출 되고 있음을 확인했다.

아래 링크에 의하면 Fragment의 생명주기 중 onViewCreated 는 여러번 호출될 가능성이 있다. 그리고 ViewModel에 관한 설정을 onViewCreated 에서 하고 있으므로 onViewCreated가 호출되는 수 만큼 observer 가 등록된다. 그러므로 Fragment가 Destory 되지 않은 상태에서 onViewCreated 가 여러번 호출될 시 onChange 이벤트에 의해 observer가 호출되면 onCreateView가 호출된 수 만큼 중복 호출된다. http://pluu.github.io/blog/android/2020/01/25/android-fragment-lifecycle/

링크에 명시된 해결책에 의하면 observer 등록의 소유자를 viewLifecycleOwner 로 설정 시 해당 observer의 생명주기가 Fragment가 아닌 Fragment View를 따르므로 Fragment가 화면에서 없어질 때 observer도 등록해제 된다.

위의 해결책을 적용한다.

domino8788 commented 4 years ago

위의 커밋을 통해 버그를 해결했으므로 이슈를 닫는다.

domino8788 commented 4 years ago

일부 코드를 덜 반영해서 이슈를 재개한다.

domino8788 commented 4 years ago

위의 커밋을 통해 반영을 완료 했으므로 이슈를 닫는다.