스팀 앱 개발기 #92 - 태그 화면이 포스트 리스트 로딩 중에 다른 탭 클릭하면 앱이 죽는 문제 (2) 해결 방법steemCreated with Sketch.

image.png

시작하며...

어제의 문제... 어떻게 해결할 수 있을까요? 다행히 성공했습니다. 오늘 이에 대한 이야기를 하려 합니다.


소스 수정

소스 수정은 BaseFragment 클래스에서 단 1줄의 추가로 해결되었습니다.

override fun onDestroyView() {
    super.onDestroyView()
    viewModel.compositeDisposable.clear()    // 추가 코드
    _binding = null
}

코드 수정 이유

탭 선택으로 프래그먼트 변경시 예전 프래그먼트의 onDestroyView() 메소드는 호출되지만 onDestroyed() 메소드는 호출되지 않습니다. 이로 인해 뷰모델의 onCleared() 메소드도 호출되지 않습니다. 그렇다면 다른 곳에서 BaseViewModel 하위 뷰모델의 compositeDisposable 필드의 clear() 또는 dispose() 메소드를 호출해야 합니다. 그래야 실행 중인 API를 취소할 수 있습니다. onDestroyView() 메소드가 적절하다고 판단했습니다. 이 메소드가 호출된 후에는 뷰가 더 이상 유효하지 않으므로 API가 더이상 필요하지 않기 때문입니다. dispose() 메소드를 호출하니 프래그먼트 재실행시 API가 작동하지 않는 문제가 있었습니다. API 재실행이 가능하도록 clear() 메소드를 대신 호출했습니다.


GitHub Commit


마치며...

이렇게 또 하나의 버그 수정을 마쳤습니다. 기능 개발을 내일부터는 다시 시작할 수 있으면 좋겠습니다.


지난 스팀 앱 개발기

Sort:  
 2 years ago 

[광고] STEEM 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.

Upvoted! Thank you for supporting witness @jswit.

Coin Marketplace

STEEM 0.18
TRX 0.14
JST 0.029
BTC 57893.29
ETH 3130.56
USDT 1.00
SBD 2.44