디자인 패턴이란 프로그램 개발에서 자주 나타는 과제를 해결하기 위한 방법 중 하나로, 과거의 소프트웨어 개발 과정에서 발견된 설계의 노하우를 축적하여 이름을 붙여, 이후에 재이용하기 좋은 형태로 규약을 묶어서 정리한 것을 의미합니다.MVC 패턴은 Model - View
Google I/O 2017에서 새로운 라이브러리들을 Android Architecture Components(AAC)로 묶어서 발표하였습니다.총 5개의 라이브러리로 이루어져 있습니다.1\. LifeCycles (Easy handling lifecycles)2\. Li
서비스는 안드로이드 어플리케이션을 구성하는 4개의 컴포넌트(액티비티, 서비스, 브도르캐스트, 컨텐트 프로바이더) 중 하나로 백그라운드에서 수행작업을 할 때 사용되는 구성요소입니다.예를 들어 네트워크 트랜잭션을 처리하고, 음악을 재생하고 파일 I/O를 수행하거나 콘텐츠
사용자가 앱을 탐색하고, 앱에서 나가고, 앱으로 다시 돌아가면, 앱의 Activity 인스턴스는 수명 주기 안에서 서로 다른 상태를 통해 전환됩니다. Activity 클래스는 활동이 상태 변화(시스템이 활동을 생성, 중단 또는 다시 시작하거나, 활동이 있는 프로세스를
각 Fragment인스턴스에는 자체 수명 주기가 있습니다. 사용자가 앱을 탐색하고 상호 작용할 때 프래그먼트는 추가, 제거 및 화면에 들어가거나 나올 때 수명 주기의 다양한 상태로 전환됩니다.디벨로퍼 문서에서는 아래와 같이 lifecycle상태 및 프래그먼트의 수명주기
✅ DataBinding 데이터 바인딩 라이브러리는 프로그래매틱 방식이 아니라 선언적 형식으로 레이아웃의 UI 구성요소를 앱의 데이터 소스와 결합할 수 있는 지원 라이브러리입니다.기존의 findViewById를 사용할 필요가 없습니다. LiveData를 액티비티에서 따
구글의 앱 아키텍쳐 공식문서를 보던 중 데이터 레이어에서 Repository라는 것을 발견하였습니다. Repository는 무엇이고 장점은 무엇인지 알아보았습니다. ✅ Repository Repository는 데이터가 Local DB인지 웹 응답인지 관계없이 동일한
✅ ViewBinding이란 ViewBinding을 사용하면 뷰와 상호작용하는 코드를 쉽게 작성할 수 있습니다. 각 xml파일에 대해 viewBinding클래스를 상속 받는 개별 뷰 바인딩 클래스가 자동으로 생성됩니다. ✅ ViewBinding을 사용하는 이유 기존
nav_graph.xml파일에 디자인탭 왼쪽 상단에 New Destination아이콘을 눌러서 프래그먼트 두개를 추가해줍니다. 그리고 firstFragment에서 클릭을 유지한채로 secondFragment로 연결하면 프래그먼트 간의 액션이 생깁니다.그리고 st
✅ Coroutine AsyncTask 손쉬운 비동기 프로그래밍 메모리 누수 등 여러 문제 발생 API30 부터는 Deprecated 대체제로 코루틴 권장 Routine 메인루틴 서브루틴 코루틴 코루틴과 스레드의 차이점 >#### 1. 메모리 구조 차이 핸드폰
비동기적으로 작업을 처리하는 코루틴에서 Suspend함수를 사용하면 작업이 모두 완료된 후에 단일 값만 반환 받을수 있음. 하지만 중간중간 진행되는 코루틴 작업 중에 갱신되는 값까지 반환 받을 수 있다면 로직 업데이트를 더 촘촘히 진행할 수 있습니다. 코루틴에서 Flo
데이터를 앱에 저장하는 방법파일 I/O (내부 또는 외부 저장소)접근 권한을 획득하고 파일을 열었다 닫았다 하는 수고가 필요합니다.관계형 데이터베이스SQLite 등을 이용해 복잡한 관계형 데이터를 저장할 수 있습니다.간단한 데이터를 저장할거라면 구축과 관리에 많은 시간
Paging은 하나의 문서를 분리된 페이지로 나누는 것Android Jetpack에서 Paging 라이브러리를 지원합니다.PaingSource : 데이터 소스와 그 소스에서 데이터를 검색하는 방법을 정의RemoteMediator : 로컬 데이터베이스네 네트워크 데이터를
안드로이드의 백그라운드 작업을 처리하기 위해 만들어진 WorkManager를 알아보겠습니다.실행 시험에 따른 분류 \- Exact Timing : 즉시 처리되어야 하는 작업 \- Deferrable : 처리를 위한 조건이 만족될 때 까지 기다릴 수 있는 작업실행 완
안드로이드 의존성 주입 라이브러리로 Dagger라이브러리를 사용하는데 너무 복잡하고 어려워 구글에서 발표한 라이브러리입니다.Application 내부에 생명주기랑 연동되는 component 보관함을 만들고 그 안에 의존 객체를 생성합니다. 액티비티나 프래그먼트에서 의존
위 처럼 Retrofit의 Header를 사용하면 JWT토큰을 헤더로 보낼 수 있지만 매 API 마다 작성해야 하므로 번거로움이 있습니다. 이를 개선하기 위해 InterCeptor를 통해 request시 jwt를 전달할 수 있습니다. Interceptor는 해당 네트워
안드로이드 스튜디오에서 연동할 때 refusing to merge unrelated histories 오류가 발생할 때가 있다. 보통 신규로 만든 프로젝트에서 주로 발생하고 서로 관련 기록이 없는 두 프로젝트를 병합할 때 git이 거부 한다고 한다.이 경우 $ git