Android/Today I Learned

Android/Today I Learned

Coil 로 OnDemand-image-resizing 적용하기

중요) 본 글은 원하는 사이즈를 보냈을 때 리사이즈 해주는 서버가 필요합니다. 이전에 회사에서 Glide -> Coil 로 마이그레이션 작업을 진행하면서 경험한 내용으로 이미지 사이즈에만 중점을 두고 있습니다. 또한 기승전결이 부족하고 도움이 되지 않을 수도 있습니다. OnDemand image resizing 이란 ? - 클라이언트의 요청에 따라 리사이징 된 이미지가 제공 되는 것을 의미합니다. 일단은 Coil 라이브러리내에서 사이즈 관련하여, 이미지를 효율적으로 로드하기 위한 방법이 존재하기 때문에 이부분을 먼저 보고 가겠습니다. sizeResolver 부분이 이미지를 로드할 때, 사이즈를 결정하는 부분입니다. 따로 명시적으로 처리하지 않으면, resolveSizeResolver() 함수가 불리우게 ..

Android/Today I Learned

Glide cache 제거 하기

몇일 전 회사에서 컴포즈와 코루틴의 성능을 최대화 시키기 위해 Glide 에서 Coil 로 Migration 하는 작업을 진행하였습니다. Glide 디펜던시를 모두 제거하고 이후에, Glide 에서 사용하는 Cache Directory 도 정리해주는 작업을 진행하였습니다. 따로 Cache Directory path 를 명시적으로 잡아서 사용하지 않고 있다면 아래 코드에서 Cache Directory path 를 찾을 수 있습니다. 따라서 아래와 같은 느낌으로 코드를 작성해주면 됩니다. // 경우에 따라서 workerThread, mainThread 골라서 사용하면 될 것 같습니다 val defaultGlideCacheName = "image_manager_disk_cache" context.cacheDi..

Android/Today I Learned

멀티 모듈에서 Missing required view with ID 에러 해결

몇일전 일을 하는 도중 아래와 같은 이슈를 만났습니다. Fatal Exception: java.lang.NullPointerException Missing required view with ID: com.{package}.debug:id/{resource_id} ViewBinding 을 사용하고 있는데, xxxxBinding 클래스에서 해당 아이디를 찾지못하는 이슈였습니다. 해당 레이아웃 파일에 들어가서 확인해보니, 아이디가 잘 선언되어 있고, ctrl + 클릭 조합으로도 리소스가 잘 이어져있는 것을 확인했습니다. 잠시 등에 땀이 흐를뻔했지만, 혹시나해서 같은 바인딩 클래스가 있는지 확인해봤습니다 . A 모듈에서 xxxxBinding 클래스가 사용되고 있었고, B 모듈에서도 xxxxBinding 클래스가..

Android/Today I Learned

테스트 케이스로 작성해보는 RxJava 함수

이제는 코루틴으로 인해, 사용빈도가 적어지는 자주 사용했던 Rx 함수들을 정리하는 시간을 가지려고합니다. 그리고 안녕... 제대로 동작하는 것을 확인하기 위해, 테스크 케이스로 작성하고 딱 20개만 해보려고합니다. 먼저 전체 코드를 링크 걸어두겠습니다 Single, Completable, Observable, Flowable, Maybe 의 목적과 특성은 이미 알고 있을 것이라고 가정하고, 위의 자료형과 상관없이 생각나는 함수 위주로 작성해보겠습니다. 1. Just 함수 /** * Single.just, SingleJust : Single 로 Wrapping 된 아이템을 한번 방출한다. * 특정 아이템을 Single 타입으로 변경하여 체이닝을 이어갈 때 사용하면 유용하겠다. * ex) flatMap 으로..

Android/Today I Learned

Recycler view 동작 원리

Recycler view 동작 원리 Recycler view 의 아답터에 데이터가 300개 있고 화면에 10개의 데이터가 보여진다면, 10개의 데이터 공간을 생성하고, 그 10개의 공간을 재활용해서 300개의 데이터를 보여준다 호출 순서 getItemCount 함수를 이용하여 Item 의 총 갯수가 몇개 인지 판단하고, getItemViewType 이 불리면서, 현재 뷰의 Position에 해당하는 ViewType을 판단한다. 이후 onCreateViewHolder에서, ViewType 에 해당하는 ViewHolder를 생성한다. onBindViewHolder 에서는 onCreateViewHolder 에서 생성된 ViewHolder 를 가져와서 현재 포지션에 맞는 데이터를 뷰홀더안에 뷰들에게 바인딩해준다..

Nanamare
'Android/Today I Learned' 카테고리의 글 목록 (2 Page)