코드를 작성할때 Activity 혹은 Fragment와 같은 UI 기반의 클래스는 UI 및 OS 상호작용을 처리하는 로직만 포함해야 합니다.(UI 클래스를 최대한 가볍게 유지하여 Lifecycle 관련 문제를 피하기 위함)UI 클래스는 무언가를 소유하는 것이 아닌 OS
ViewModel은 앱의 Lifecycle을 고려하여 UI 관련 데이터를 저장하고 관리하는 컴포넌트입니다.UI Controller로부터 UI 관련 데이터 저장 및 관리를 분리하여 ViewModel이 담당하도록 하면 다음과 같은 문제를 해결할 수 있습니다.안드로이드 프레
식별 가능한 Data Holder Class(식별 가능한 일반 클래스와 달리 LiveData는 수명 주기를 인식한다.LiveData는 active한 상태(STARTED or RESUMED)일때만 감싸고 있는 데이터의 변경을 알려줍니다.LiveData 객체는 Observ
Room은 스마트폰 내장 DB에 데이터를 저장하기 위해 사용하는 ORM(Object Relational Mapping)라이브러리입니다. 쉽게 말해서, Room은 데이터베이스의 객체를 코틀린(or 자바)의 객체로 매핑해주는 역할을 합니다.SQLite와의 차이점으로 설명드
안드로이드가 점점 진화하며 어느 순간부터 백그라운드 작업이 수월하지 않게 되었다.초기에는 Service를 이용해서 작업하거나 Broadcast Receiver를 통하여 프로세스를 깨우는 것 또한 쉽게 가능했다.하지만 안드로이드 M(API 23)부터 백그라운드 작업을 위
WorkRequestBuilder에 제약사항을 추가할 수 있다. 제약 사항은 Constraints.Builder()를 통해 작성할 수 있다.val constraints = Constraints.Builder() .setRequiresCharging(
CoroutineWorker 사용해보기
https://jaejong.tistory.com/125 참조
LiveData를 위한 라이브러리LiveData<'X'> 타입 데이터를 LiveData<'Y'> 타입 데이터로 변환한다는 공통점이 있지만, 차이점이 있습니다.LiveData<'Y'> map (LiveData<'X'> source, Function&
속성 값을 설정하거나 이벤트 리스너를 설정하는 것처럼 View(xml 레이아웃)의 attribute를 정의하고 로직을 작성하는 데 사용된다.Android의 기본 UI들은 대부분 이미 정의된 BindingAdapter가 있습니다.BindingAdapter를 사용하려면 D
앱 성능 향상findViewById()가 삭제되어 코드 가독성과 유지성을 증가 시켜 준다.
페이징이란 데이터를 가져올 때 한 번에 모든 데이터를 가져오는 것이 아니라 일정한 갯수로 나눠서 가져오는 것을 말합니다.성능, 메모리, 비용 측면에서 굉장히 효율적입니다.Paging3 라이브러리는 로컬 저장소에서나 네트워크를 통해 데이터를 나누어 효율적으로 로딩할 수