Rxjava 3

Recyclerview에서 ListAdapter 의 변경사항이 실시간으로 업데이트 되지 않던 이슈

지난 글에서 ListAdapter를 포스팅하며 DiffUtil에서 새로운 아이탬을 구별하거나, 아이탬의 내용이 같은지 구분하는 것을 설명한 적이 있다 해당 링크 : https://yk-coding-letter.tistory.com/8 문제 상황 그런데 최근, 개발을 하던 중 Room에서 변경사항을 recyclerview에 실시간으로 업데이트하려고 했으나 잘 작동하지 않았던 이슈가 있었다. 분명히 areItemsTheSame() 과 areContentsTheSame()을 제대로 작성했음에도 ui로 드러나지 않았고, 앱을 껐다 키거나 스크롤을 내렸다가 다시 돌아왔을 때야 비로소 변경되었다. 어떻게 이런 일이 발생할 수 있는 것인지 생각해보았다. 우선 나는 정확히는 Paging3의 recyclerview를 사..

Programming/Android 2021.11.24

RxJava + Retrofit 으로 통신 모듈 구현하기

RxJava3와 Retrofit2 를 사용하여 통신 모듈을 만들어보자 추가로 여기서 DI는 hilt를 사용했다. api는 ITunes Api를 사용하겠다. 샘플 코드로 적당한 api인 것 같다. 만들 클래스는 아래와 같다.(당장 api 통신을 하기에는 약간의 부가적인 것도 있지만 확장성을 생각해서 전부 설명하겠다.) - ITunesService - ITunesClient - NetworkModule ITunesService 이다. 반환형이 Single으로 둔 이유는 RxJava의 Observable중 Single이 한 번의 이벤트에서 사용될때 쓰이기 때문이다. 참고로 나는 여기서 한번 @Query의 어노테이션을 깜박하고 빼먹었는데 `No Retrofit annotation found. (parameter..

Programming/Android 2021.10.03

RxJava 적용기

RxJava는 러닝커브가 다소 있는 것으로 알려져 있다. coroutine+suspend fun 와 비교해서 높은 수준의 작업을 실시간으로 처리할 수 있고, coroutine Flow 와 비교해서 더 안정적인 프로그래밍을 할 수 있다는 장점으로 인해 배울 가치는 충분한 것 같다. 배워야할 개념도 많고 빠른 기간 내에 전부 이해할 것은 기대하지 않지만 LiveData에서의 observe, Flow에서의 일부 오퍼레이터 경험(맛보기) 이 있으니 어느정도는 유리하게 시작할 수 있지 않을까?ㅎㅎ 차근차근 시작해보자 중요한 개념 Observable / Observer RxJava에서는 Observable을 구독하는 Observer가 존재하고, Observable이 순차적으로 발행하는 데이터에 대해서 반응한다. o..

Programming/Android 2021.10.03