jetpack3 [Android] WorkManager를 이용한 백그라운드 작업 🧐 WorkManager? 안드로이드가 버전업을 거듭하며 어느 순간부터 백그라운드 작업이 수월하지 않게되었다. 초기에는 Service를 이용해서 작업하거나 Broadcast Receiver를 통하여 프로세스를 깨우는 것 또한 쉽게 가능했다. 하지만 안드로이드 M(API 23)부터 백그라운드 작업을 위한 제약 사항들이 추가되며, 개발자들은 여러 API를 통하여 추가 코드 작성이 필요해졌다. 즉, 불가능한 것은 아니지만 까다로워졌다는 것이다. 백그라운드 작업은 여러가지 방법들로 가능하다. AlarmManager, JobScheduler, JobDispatcher(Firebase), 그리고 지금 알아볼 WorkManager. 여기서 여러가지 방법들이 존재하는 이유는 용도(목적)에 따라서 개발자들이 적절한 AP.. 2021. 7. 25. [Android] Jetpack Paging 3 라이브러리 사용하기 🧐 Paging Library 페이징 라이브러리는 로컬 데이터베이스 또는 네트워크(Remote)의 데이터를 페이지 단위로 UI에 쉽게 표현할 수 있도록 도와주는 라이브러리다. 라이브러리를 사용하지 않고 기존에 페이징을 구현하기 위해서는 RecyclerView와 같은 리스트 UI가 상단 또는 하단에 도달했는지 판단하는 코드를 작성하고, 다음 페이지를 로드(or Refresh)하는 코드를 또 작성해야만 했다. 페이징이 필요한 모든 화면에 동일한 코드를 작성해야만 했고 네트워크 오류, 스크롤 감지 이상(?)과 같은 예외 처리 코드도 상당했다. 위 문제점들을 포함한 여러 문제를 해결하기 위하여 Jetpack Paging Library가 출시되었다. 그리고 올해(2021년) 5월 Paging 3 라이브러리가 St.. 2021. 6. 26. [Android] Room을 이용하여 로컬 데이터베이스 저장하기 🧐 Room? 로컬 데이터베이스를 이용하는 방법 중 하나는 안드로이드에서 기본적으로 제공하는 데이터베이스인 SQLite가 있다. 하지만 구글에서 2017년 AAC(Android Architecture Components)를 내놓음으로 SQLite를 직접 사용하여 구현하는 것보다 Room을 사용할 것을 권장했다. 권장 사유는 아래 안드로이드 SQLite 공식 문서 Caution 내용을 참고할 수 있었다. SQL Query를 직접 작성했어야 했고, 이를 컴파일 시점에서 유효성 검증이 불가하다는 점 Database Scheme이 변경될 때 일일이 Query를 업데이트해야한다는 점 데이터를 객체로 변환할 때 많은 boilerplate code를 작성해야한다는 점 Room은 SQLite의 추상 레이어를 제공하여 .. 2021. 6. 10. 이전 1 다음