💡 서비스란 >- 백그라운드에서 오래 실행되는 작업이나 원격 프로세스 작업을 수행하는 구성요소. 사용자 인터페이스 제공하지 않음. 액티비티 같은 다른 컴포넌트가 서비스를 시작할 수 있고, 바인딩하여 상호작용할 수 있음. 프로세스 간 통신 (IPC) 가능. 서비스는
사용자 눈에 띄는 작업 수행.음악플레이어 앱 - 현재 재생중인 노래 표시피트니스 앱 - 달리기 이동거리 알림 표시포그라운드 서비스는 알림을 표시하여 리소스를 소비하고 있음을 유저에게 알리며 서비스를 중지하거나 포그라운드에서 제거하지 않는 한 해제 불가. (안드로이드 1
🔎 브로드캐스트 리시버란? > 안드로이드 시스템 및 다른 안드로이드 앱에서 브로드캐스트 메시지를 주고받을 수 있음. 예시 시스템은 충전중이거나 배터리 부족, 사진이 캡쳐되었음을 알리는 브로드캐스트를 시작하고 리시버가 이를 수신한다. 앱이 특정 브로드캐스트를 수신하도
앱 간의 데이터 공유 및 앱과 앱 저장소 사이의 데이터 접근을 쉽게 할 수 있게 사용되는 컴포넌트.파일 시스템, SQLite 데이터베이스, 웹 혹은 앱이 액세스할 수 있는 기타 영구 저장 위치에 저장할 수 있는 앱 데이터의 집합을 관리.예시) 안드로이드 시스템은 사용자
🔎 액티비티란 > 사용자가 앱과 상호 작용하기 위한 시작점. 사용자 인터페이스가 있는 단일 화면을 뜻함. 각각의 액티비티는 함께 작동하여 일관된 사용자 경험을 형성하지만, 각 액티비티는 다른 액티비티와 독립적임. 데스크탑 환경과 다른 점 사용자와 앱의 상호 작용이
🔎 LiveData란 > 관찰 가능한 (Observable) 데이터 홀더 클래스로, 다른 Observable 데이터와 달리 액티비티, 프래그먼트 또는 서비스와 같은 다른 앱 컴포넌트의 라이프사이클을 고려함. 즉, 활성(active) 라이프사이클 상태에 있는 앱 컴포
🔎 ViewModel이란 > 비즈니스 로직 혹은 화면 레벨의 상태 보유자. 상태를 UI에 노출하고 관련 비즈니스 로직을 캡슐화함. 상태를 캐싱하고 구성 변경을 통해 상태 유지 -> 화면을 회전하는 등의 구성 변경 시에도 UI가 데이터를 다시 가져오지 않아도 됨.
Room 라이브러리는 SQLite 위에 추상화 계층을 제공하여 SQLite의 모든 기능을 활용하면서도 데이터베이스 액세스를 원활하게 할 수 있음. (로컬 데이터베이스)1\. SQL 쿼리의 컴파일 시 확인2\. 반복적이고 오류가 발생하기 쉬운
🔎 Room Entity를 사용하여 데이터 정의하기
🔎 객체 사이의 관계 정의 SQLite는 관계형 데이터베이스이므로 엔티티 사이의 관계를 정의할 수 있음. 대부분의 객체 관계 맵핑 라이브러리는 엔티티 객체가 서로를 참조하는 것을 허용하지만 Room은 명시적으로 이것을 금지함. 💡 두 가지 접근법 Room에서 엔티티 간의 관계를 정의하고 쿼리하는 방법 Intermediate data class 이...
Room 엔티티 클래스와 기본 데이터베이스 테이블을 수정해야 할 경우, 기기 내에 이미 존재하는 데이터베이스의 유저 데이터를 보존하는 것이 중요.
🔎 View Binding이란 > 뷰와 상호작용하는 코드를 쉽게 작성할 수 있게 해주는 기능. 모듈에서 뷰 바인딩을 활성화하면 해당 모듈에 있는 각 XML 레이아웃 파일에 대해 바인딩 클래스를 생성함. 바인딩 클래스의 인스턴스는 해당 레이아웃의 ID가 있는 모든 뷰
🔎 Lifecycle-Aware Components로 수명주기 관리
🔎 데이터 바인딩이란 > 프로그래밍적으로가 아닌 선언적 형식을 사용하여 앱의 데이터 소스와 레이아웃 UI 컴포넌트를 바인딩할 수 있도록 허용하는 라이브러리. 레이아웃은 종종 액티비티에서 UI 프레임워크 메서드를 호출하는 코드와 함께 정의됨. 하지만 Data Binding 라이브러리를 사용하여 레이아웃 파일에서 위젯에 직접 텍스트를 할당할 수 있음. ...
🔎 observable 데이터 객체와 작업 observability는 객체가 데이터 변화를 다른 객체에게 알릴 수 있는 능력을 나타냄. 데이터 바인딩 라이브러리를 사용하면 객체, 필드 또는 컬렉션을 관찰 가능하게 만들 수 있음. 데이터 바인딩을 사용하면 데이터 객체를 수정해도 UI가 자동으로 업데이트되지 않음. 이 때 데이터가 변경될 때 다른 객체(리스...
🔎 아키텍처 구성요소에 레이아웃 뷰 바인딩하기 💡 LiveData를 사용하여 데이터 변경사항을 UI에 알리기 LiveData 개체를 데이터 바인딩 소스로 사용하여 데이터 변경사항을 UI에 자동으로 알릴 수 있음. Observable 필드와 같은 Observab
🔎 네비게이션 > 사용자가 앱 내에서 서로 다른 콘텐츠 화면들 사이를 이동하고 탐색할 수 있게 하는 상호작용을 나타냄. 📝 네비게이션 컴포넌트 주요 구성 Navigation graph 모든 네비게이션 관련 정보를 한 곳에 집중시킨 xml 리소스. 앱 내 각각의 목적지뿐만 아니라 사용자가 앱을 통해 이동가능한 경로도 포함됨. NavHost 네비게이...
내비게이션 그래프는 앱의 모든 목적지와 사용자가 한 목적지에서 다른 목적지로 이동하는 데 사용할 수 있는 논리적 연결 또는 액션을 포함하는 리소스 파일. 내비게이션 컴포넌트는 앱의 내비게이션을 관리하기 위해 내비게이션 그래프 사용.앱의 최상위 내비게이션 그래프는 앱을
🔎 WorkManager를 이용한 작업 스케줄 >WorkManger는 지속되는 작업에 권장되는 솔루션으로 백그라운드 처리에 기본적으로 권장되는 API. 지속적인 작업의 타입 WorkManager는 세가지 타입의 지속되는 작업을 처리함. Immediate: 즉시
작업은 수명 동안 일련의 상태 변경을 거침.일회성 작업 상태일회성 작업 요청의 경우 작업은 ENQUEUED 상태에서 시작됨.ENQUEUED 상태에서는 제약 조건 및 초기 지연 타이밍 요구 사항이 충족되자마자 작업을 실행할 수 있음. 그 다음 RUNNING 상태로 이동한
🔎 Chaining Work WorkManager를 통해 여러 종속 작업들을 지정하고 실행 순서를 정의하는 작업 체인을 생성하고 대기열에 추가할 수 있음. 특정 순서로 여러 작업을 실행해야 할 때 특히 유용함. 작업 체인을 만들기 위해 WorkContinuatio
Jetpack DataStore는 키-값 쌍 또는 형식화된 개체를 프로토콜 버퍼와 함께 저장할 수 있는 데이터 저장 솔루션.DataStore는 Kotlin 코루틴과 Flow를 사용하여 데이터를 비동기적이고 일관되며 트랜잭션 방식으로 저장함.현재 SharedPrefere
🔎 앱 아키텍처 가이드 📖 모바일 앱 사용자 경험 안드로이드 앱에는 액티비티, 프래그먼트, 서비스 , Contents Provider, BroadCast Receiver를 비롯한 여러 앱 컴포넌트 포함 -> 매니페스트에서 앱 컴포넌트의 대부분을 선언. Andr
UI의 역할애플리케이션 데이터를 화면에 표시하고 사용자 상호작용의 주요 지점 역할을 하는 것.사용자 상호 작용 (예: 버튼 누르기)이나 외부 입력(예: 네트워크 응답)으로 인해 데이터가 변경될 때마다 UI는 이러한 변경사항을 반영하도록 업데이트되어야 함.사실상 UI는
🔎 UI 이벤트 > UI 이벤트는 UI 또는 ViewModel을 통해 UI 계층에서 처리되어야 하는 작업. 가장 일반적인 유형의 이벤트는 사용자 이벤트. 사용자는 화면을 탭하거나 동작을 생성하는 등 앱과 상호작용하여 사용자 이벤트를 생성함. UI는 onClick()
이해해야 할 것UI 레이어에 존재하는 UI 상태 타입을 이해UI 레이어의 해당 UI 상태에서 동작하는 로직 타입을 이해ViewModel 또는 간단한 클래스와 같은 상태 홀더의 적절한 구현을 선택하는 방법UI 상태와 이를 생성하는 로직이 UI 레이어를 정의함.UI sta
🔎 Data layer UI 레이어에는 UI 관련 상태와 UI 로직이 포함되어 있는 반면, 데이터 레이어에는 애플리케이션 데이터와 비즈니스 로직이 포함되어 있음. 비즈니스 로직은 앱에 값을 부여하는 요소. 비즈니스 로직은 응용 프로그램 데이터를 생성, 저장 및 변경
🔎 Domain layer 도메인 레이어는 UI 레이어와 data 레이어 사이의 선택적인 레이어. 도메인 레이어는 복잡한 비즈니스 로직 또는 여러 ViewModel에서 재사용되는 간단한 비즈니스 로직을 캡슐화하는 역할을 담당함. 모든 앱에 이러한 요구사항이 있는