Fragment와 onSaveInstance (feat.ViewPager)

Fragment는 Runtime에 단독으로 실행될 수 없으며, 반드시 Activity가 필요하다. 대표적인 configuration change인 스크린 회전은 Activity를 재생성하게 되고, 이때 개발자는 onSaveInstanceState()와 onRestoreInstanceState() 콜백을 오버라이드 하여, 뷰나 기타 상태등을 유지할 수 있게 된다. 물론 매니페스트에서 액티비티의 configurationChange옵션을 추가하여서 Activity가 재생성되지 않게 하는 방법 더보기…

Android에서 Dagger2 적용하기

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

Navigation Component의 한계

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

글쓴이 Charlezz,

Android Architecture Component – WorkManager

WorkManager로 작업 처리 하기 WorkManager API는 특정 유예가능하며, 비동기 적인 작업들을 쉽게 처리할 수 있게 해줍니다. 이 API들은 개발자들이 작업(Work)을 만들게 하고 WorkManager에게 작업을 넘긴뒤 즉각적으로 또는 적당한 때에 해당 작업을 수행 할 수 있도록 합니다. 예를들면, 앱은 가끔 새로운 더보기…

글쓴이 Charlezz,

Android Architecture Component – Room

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

글쓴이 Charlezz,

Android Architecture Component – Navigation

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

Android Architecture Component – ViewModel

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

글쓴이 Charlezz,

Android Architecture Component – LiveData

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

글쓴이 Charlezz,

Reactive Programing(5) – 안드로이드에서의 RxJava 활용

Reactive Programing(1) – 리액티브 프로그래밍 개념잡기 Reactive Programing(2) – Reactive Operator Reactive Programing(3) – Reactive Operator Reactive Programing(4) – Scheduler Reactive Programing(5) – 안드로이드에서의 RxJava 활용 안드로이드에서 RxJava2 사용하기   자바는 함수형 프로그래밍을 제대로 지원하지 못하고 있으며, 여전히 Side Effect(부수효과)를 더보기…

Reactive Programing(4) – Scheduler

Reactive Programing(1) – 리액티브 프로그래밍 개념잡기 Reactive Programing(2) – Reactive Operator Reactive Programing(3) – Reactive Operator Reactive Programing(4) – Scheduler Reactive Programing(5) – 안드로이드에서의 RxJava 활용 Scheduler 스케줄러 개념 익히기 지금까지의 예제들은 대부분 MainThread에서 동작 했습니다. 이를 비동기로 동작하게 하기 더보기…