Parcelable을 자동으로 구현해주는 @Parcelize에 대해 알아보자.

@Parcelize kotlin-parcelize 플러그인은 Parcelable 구현을 자동으로 해준다. 새로운 클래스를 생성도 필요 없고 @Parcelize 어노테이션을 추가하는 것만으로 직접 Parcelable 관련 코드를 작성 한 것과 같이 동작한다. 컴파일타임에 바이트 코드 변조를 하기 때문에 추가되는 메서드 및 런타임시 오버헤드 비용도 발생하지 않는다. 그리고 무엇보다 이 플러그인은 구글과 JetBrains가 협업하여 만든 플러그인이기 때문에 다른 더보기…

SingleLiveEvent 개선하여 더블 클릭 방지 하기!

SingleLiveEvent 개선하기 개요 SingleLiveEvent에 대한 설명은 이전 포스팅을 참조하자. Jetpack 라이브러리의 Android Arhitecture Component의 등장이후로 ViewModel과 LiveData를 열심히 사용중이다. View에 대한 ViewModel의 의존관계를 완벽하게 끊어냄으로써 기존에 사용하던 이벤트 처리 방식을 변경 해야 했다. 이벤트 리스너를 뷰컨트롤러(Activity/Fragment)에 구현하는 방식을 많이 사용했는데, ViewModel은 메모리 누수등의 이유로 Context의 참조를 엄격하게 금지하고 있다. 그러므로 더보기…

글쓴이 Charlezz,

안드로이드의 Context를 이해하고, 메모리 누수를 방지하기

안드로이드의 Context란 무엇일까? Context란 사실 단어 그대로 맥락(Context)을 의미하며, 현재의 상태를 나타낸다. 다음 내용을 읽어보면 좀 더 Context를 이해하는데 도움 될 것 같다. Context에 대한 중요한 몇 가지 사실들! Application의 현재 상태를 Context를 통해 표현한다. Activity 그리고 Application의 정보를 Context를 통해 얻을 수 있다. Context를 활용하여 Resource, Database, SharedPrefernces 등의 더보기…

안드로이드 Paging3 컴포넌트 정복하기 – Part2 (네트워크에서의 페이징과 로컬 데이터 캐싱)

안드로이드 Paging3 컴포넌트 정복하기 – Part2 지난 Part1 에서는 Paging3 전반적인 내용과 PagingSource를 통해 네트워크로부터 페이징 된 데이터를 로드하고 화면에 나타내는 방법에 대해서 살펴보았다. 이번 포스팅에서는 오프라인 상태 또는 커넥션이 불안정한 상태에서도 앱 사용성을 보장하여 향상된 사용자 경험을 제공하는 방법에 대해서 알아본다. 페이징을 하는 방법은 네트워크와 로컬 데이터베이스로부터 동시에 페이징을 더보기…

안드로이드 Paging3 컴포넌트 정복하기 – Part1 (페이징 된 데이터를 로드하고 화면에 나타내기)

안드로이드 Paging3 컴포넌트 정복하기 – Part1 Paging3는 Jetpack 라이브러리 중 하나로 다양한 데이터 소스로 부터 데이터를 나누어 효과적으로 로딩할 수 있게 한다. Paging3는 네트워크 또는 로컬 데이터베이스에서 쉽게 데이터를 불러올 수 있도록 도와주기 때문에 개발 시간을 단축시켜 준다. Paging3는 구글에서 추천하는 안드로이드 앱 설계방식과 그리고 다른 Jetpack 컴포넌트와 잘 동작 더보기…

안드로이드에서 LruCache를 파헤치기

LruCache란? 면접 또는 코딩테스트에서 흔히 접할 수 있는 주제가 바로 LruCache다. 안드로이드에서는 LruCache가 어떻게 동작하고, 언제 그리고 어디서 사용되는지 한번 알아보도록 하자. LruCache에서 Lru란 Least Recently Used(최근에 가장 적게 참조됨)의 약자다. 그러므로 즉, LruCache는 제한된 사이즈에서 참조(set or get)된지 가장 오래된 객체를 제거하는 데이터구조다. 그러므로 LruCache를 사용할때는 자주 참조되는 객체일 더보기…

Span이 적용된 텍스트를 잘라서 붙일 때 제대로 나오지 않는다면?

Span이 적용된 텍스트를 잘라서 붙일 때 제대로 나오지 않는다면? Span이 적용된 텍스트를 잘라서 붙여야 하는 경우가 있다. 예를 들면 원문 중간에 새로운 텍스트를 삽입하거나 필요없는 텍스트를 제거해야 하는 경우가 그렇다. 나의 경우도 별반 다르지 않았기 때문에 Span이 적용되어 있는 텍스트를 자른뒤 다시 이어 붙였지만 이상하게도 원하는대로 나오지 않았다. Span이 적용된 더보기…