Start Using Kotlin Serialization as a Retrofit Converter
https://medium.com/@a.shariat.b/start-using-kotlin-serialization-as-a-retrofit-converter-bbfe86eefa61
KMP를 사용한다면 retrofit을 사용할 때 kotlin을 지원하는 kotlin serialization을 사용할 수 있다.
implementation 'com.squareup.retrofit2:converter-kotlinx-serialization:latest.version'
기존 data class는 다음과 같이 변경한다.
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
@Serializable
data class UserNetworkModel(
@SerialName("userId") val userId: Int? = null,
@SerialName("id") val id: Int? = null,
@SerialName("title") val title: String? = null,
@SerialName("body") val body: String? = null
)
모델에 Date가 있는 경우 Instant를 사용하거나 custom serializer를 사용해야 한다.
Optimizing Lazy List in Jetpack Compose: Best Practices
https://medium.com/@vivekbansal19/optimizing-lazy-list-in-jetpack-compose-best-practices-8da06a5dd472
- Recomposition을 skip 하기 위해 immutable 객체 사용 (@Stable 가능)
- key를 사용해서 필요한 경우에만 recomposition을 하도록 함
- 비용이 많이 드는 계산은 remember을 사용
- 애니메이션 중 recomposition 제한을 위해 derivedStateOf 사용
- 효율적인 이미지 로드를 위해 Coil이나 Glide 등의 라이브러리 사용(이미지 캐싱)
- 중첩 list 피하기(items 빌더를 사용해 flatten)
- Pagination을 사용해 필요한 만큼의 데이터만 가져옴