본문 바로가기

📱 Android53

[Android] Glide vs Picasso 이미지 라이브러리 중 가장 유명한 Glide와 Picasso입니다 각각 장단점은 잘 모르고 있었던터라, 한번 조사해봤어요 Glide Glide.with(context) .load(imageUrl) .apply(RequestOptions() .centerCrop() .placeholder(R.drawable.loading_spinner) .diskCacheStrategy(DiskCacheStrategy.ALL)) .into(imageView) 장점 - GIF, webp 지원 - 이미지 로딩 성능이 좋다 - 생명주기와 연동된다 Glide.with(context) context가 Activity / Fragment 에 따라 해당 컴포넌트 생명주기와 연동해 동작합니다 ex) 이미지 로딩이 진행 중인데 컴포넌트들.. 2024. 3. 17.
[Android] @IgnoredOnParcel 통신을 위해 model을 설계했는데, 클라이언트에서만 사용하는 변수가 필요한 상황입니다 클라이언트에서만 사용될 값을 추가하는데, 만약 이게 서버 통신에서 쓰인다면.. 아찔한 상황입니다 T_T 이럴 경우엔, IgnoredOnParcel 을 사용합니다 @IgnoredOnParcel - Parcelize annotation이랑 함께 사용되는데 특정 필드가 Parcelable 구현에서 제외시킵니다 즉 Parcelable 인터페이스를 구현할 때 고려되지 않으므로, 인텐트에 데이터를 넘기거나 상태를 저장/복원하는 과정에서 이 변수는 무시되고, 클라이언트 상에서만 사용할 수 있습니다 :) @Parcelize data class User( val name: String, val age: Int, @IgnoredOnPa.. 2024. 2. 25.
[Android] SingleLiveEvent , EventWrapper SingleLiveEvent : 화면 회전 등 구성요소 변경 시, 이벤트가 여러번 호출되는 걸 방지하기 위해 사용 -> 단일 이벤트 사용 import android.util.Log import androidx.annotation.MainThread import androidx.lifecycle.LifecycleOwner import androidx.lifecycle.MutableLiveData import androidx.lifecycle.Observer import java.util.concurrent.atomic.AtomicBoolean class SingleLiveEvent : MutableLiveData() { private val pending = AtomicBoolean(false) @Main.. 2023. 9. 3.
[Android] viewModels vs activityViewModels (Hilt 사용) ViewModel을 초기화할 때 viewModels()만 사용해봤었는데 activityViewModels의 존재를 알게됐어요 두 가지의 차이점에 대해 알아봅시다! 🔍 왜 이렇게 처음보는게 늘 많은지 T_T 멀고도 험한... viewModels() 해당 ViewModel을 초기화하는 Component의 LifeCycle을 따름 activityViewModels() @MainThread public inline fun Fragment.activityViewModels( noinline extrasProducer: (() -> CreationExtras)? = null, noinline factoryProducer: (() -> Factory)? = null ): Lazy = createVi.. 2023. 7. 27.