Android Final Architecture – (1) 개요

Final Architecture – (1) 개요 이 가이드는 이미 기초적인 안드로이드앱을 만들줄 알고, 조금 구조적인면에서 더 나은 앱을 만들기를 원하는 개발자를 위한 글입니다. 애플리케이션을 만들다보면 초기에는 어찌어찌 돌아는 가는데, 기능을 추가하고 업데이트를 하면 할 수록 유지보수가 힘들어 지는 것을 느낄수 있습니다. 어디부터 어디까지 손을봐야 할지… 한군데를 건드렸더니 이곳 저곳에서 터지는 사이드이펙트… 더보기…

Paging – DataSource 종류

2018 구글 I/O 에서 Paging라이브러리 발표이후 로컬(Room)로만 페이징을 했는데, Retrofit 등을 이용한 네트워크나 Cursor를 통한 페이징을 할때는 DataSource를 직접 구현해줘야한다는 사실을 알게 되었다. 그래서 DataSource의 종류에 대해서 알아보고 테스트를 해본것을 정리하고자 한다. 1.PositionalDataSoure 첫번째로 PositionalDataSource는 Position기반의 데이터 로더로 셀수 있는 고정된 사이즈를 갖는 데이터집합을 페이징 하는데 적합하다. 임의의 포지션으로부터 원하는 더보기…

글쓴이 Charlezz,

Activity 또는 Fragment는 언제든지 부서질 수 있다.

많은 개발자들이 처음 안드로이드 개발에 입문할 때 알게 되는것이 안드로이드의 4대 컴포넌트일 것이다. 컴포넌트만 잘 이해하고 개발해도 좋은 품질의 앱을 만들 수 있다고 자부한다. (정말? ㅇㅇ) 오늘은 UI컨트롤러(Activity or Fragment)의 생명주기와 관련된 이야기를 하고자 한다. 많은 안드로이드 개발자들이 놓치는 것이 있다. 흔히들 UI컨트롤러를 다룰 때 onCreate()를 시작으로 onDestroy()가 되기까지의 한 사이클만을 더보기…

Android Architecture Component – Paging

Paiging라이브러리 개요 페이징 라이브러리는 데이터 로딩을 쉽게, 점진적으로 그리고 아주 우아하게 RecyclerView와 함께 작동하도록 도와주는 라이브러리이다. 많은 앱들이 많은 양의 데이타를 로딩해두고, 실제로는 전체의 일부만을 실제로 보여주게 된다. 페이징라이브러리는 합리적으로 이런 데이터의 부분집합만을 표현하고 관찰하는것을 도와준다. 이런 기능은 몇몇 장점을 갖게 된다. 데이터를 점진적으로 로딩하기 때문에 네트워크 사용량 및 시스템 더보기…

글쓴이 Charlezz,

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이란 무엇일까? 한국말로 하자면 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. 더보기…