Android에서 Dagger2 적용하기

Who should read? 이제 막 안드로이드를 배우고 있는 개발자에게는 추천하지 않습니다. 하지만 안드로이드를 개발을 어느정도 해봤고, 내가 중급개발자 이상이 되고 싶다 하시는분은 잘 오셨습니다. 자바와 객채지향개념에 대해서 친숙하다면 큰 어려움이 없을 겁니다. Welcome to Dagger World  Dependency Injection이란 무엇일까? 한국말로 하자면 Dependency는 의존성이고, Injection은 주입이다. 의존성이란? 코드에서 두 모듈간의 연결 더보기…

Navigation Component의 한계

Navigation Component의 한계 Dagger와 Databinding 그리고 fragment의 초기화 문제 어떤 액티비티가 xml 레이아웃을 dagger를 이용하여 바인딩객체를 주인한다고 가정하자. 이때 액티비티의 xml 레이아웃내에 <fragment> element를 써서 프레그먼트를 초기화 하는 경우 액티비티의 레이아웃조차도 인플레이팅이 끝나지 않아 context가 없는상태에서 fragment를 인플레이팅 하려고하니 context 관련해서 nullpointer exception이 발생한다. MainActivity.kt

  main_activity.xml

  더보기…

글쓴이 Charlezz,

Android Architecture Component – WorkManager

WorkManager로 작업 처리 하기 WorkManager API는 특정 유예가능하며, 비동기 적인 작업들을 쉽게 처리할 수 있게 해줍니다. 이 API들은 개발자들이 작업(Work)을 만들게 하고 WorkManager에게 작업을 넘긴뒤 즉각적으로 또는 적당한 때에 해당 작업을 수행 할 수 있도록 합니다. 예를들면, 앱은 가끔 새로운 리소스를 네트워크로부터 다운로드 받아야하는데, WorkManager를 이용한다면 Task를 설정하고, 실행하기 위한 더보기…

글쓴이 Charlezz,

Android Architecture Component – Room

Room을 활용하여 Local 데이터베이스에 data를 저장해보자 Room 은 SQLite를 추상계층으로 감싸고 있으며, 쉽게 데이터베이스에 접근하여 SQLite를 마구마구 자유롭게 풀파워로 사용할 수 있다. Room을 사용한다면 만만치 않은 양의 구조화된 데이터를 영구적으로 저장하고 처리하는 애플리케이션도 그뤠잇 하게 이득을 볼수 있는 부분이 있다. 대부분의 경우는 관련 데이터의 조각들을 캐시화 하는것이였다. 이 방법에서는 기기가 더보기…

글쓴이 Charlezz,

Android Architecture Component – Navigation

네비게이션 컴포넌트는 애플리케이션의 화면간의 이동을 구현하는것을 단순화 시켜주는 라이브러리이다. Jetpack에는 포함되어있지만 androidx로 패키지 리팩토링은 진행중이며, 게다가 아직은 보편화되지 않은컴포넌트인지라 ‘Navigation’이라는 키워드로 검색하면 Navigation View, Navigation bar 등의 자료가 더 많아 공식문서 외에는 정보를 접하기가 어렵다. 사실 발표되지 얼마 않은 기술들은 공식문서가 제일 보기 좋다.   네비게이션의 기본 원칙   1. 더보기…

Android Architecture Component – ViewModel

ViewModel 개요 ViewModel은 UI와 관련된 data를 생명주기를 신경쓰면서 저장하거나 관리하기위해서 설계된 클래스이다. ViewModel은 screen rotation 과 같은 configuration변화에서도 살아남는다. 안드로이드 프레임워크는 액티비티나 프레그먼트같은 UI컨트롤러의 생명주기를 관리한다. 안드로이드 프레임워크는 사용자의 행동이나 또는 개발자가 제어할 수 없는 어떤 이벤트(메모리부족 등)로 인해, 아마 UI컨트롤러를 파괴하거나 재생성하게 된다. 만약 시스템이 UI컨트롤러를 파괴하거나 재생성한다면 UI와 관련된 더보기…

글쓴이 Charlezz,

Android Architecture Component – LiveData

개요 LiveData 는 Data의 변경을 관측할 수 있는 Data Holder 클래스 입니다. 일반적인 Observable과는 다르게 LiveData는 생명주기를 알고 있습니다.(Lifecycle-Aware) 액티비티나, 프레그먼트, 서비스 등과 같은 컴포넌트의 생명주기(Lifecycle)를 존중하고 그에따라 LiveData는 활성상태(active)일때만 데이터를 업데이트 합니다. 활성상태란 STARTED 또는 RESUMED를 의미합니다. Lifecycle State CREATED Created state for a LifecycleOwner. DESTROYED Destroyed state for a LifecycleOwner. 더보기…

글쓴이 Charlezz,