일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 테스트
- activity
- scroll
- Compose
- DART
- livedata
- data
- Flutter
- Coroutines
- Button
- drift
- 앱
- 앱바
- ScrollView
- binding
- LifeCycle
- intent
- android
- viewmodel
- Navigation
- 계측
- textfield
- CustomScrollView
- Dialog
- appbar
- TEST
- tabbar
- 안드로이드
- Kotlin
- textview
- Today
- Total
목록전체 글 (346)
Study Record
😶 Compose Jetpack Compose 는 Android UI를 빌드하기 위한 최신 툴킷이다. Compose 이전의 UI 는 View 기반 XML 파일을 따로 구성해야 했다. Compose 는 이전 View 기반보다 적은 양의 코드와 직관적인 Kotlin 기능으로 UI 개발을 간소화한다. Compose 가 UI 를 빌드하는 방법은 구성 가능한 함수 즉, 데이터를 받아서 UI 요소를 설명하는 함수 집합을 정의하여 UI 를 빌드할 수 있다. 😶 구성 가능한 함수(Composable) 구성 가능한 함수는 Compose 내에서 UI 의 기본 빌드 블록으로 UI 의 일부를 설명하며, 아무것도 반환하지 않고 몇 개의 입력을 받아 화면에 표시되는 내용을 설명하는 특징이 있다. 구성 가능한 함수는 @Compos..
우리가 주로 사용하는 핸드폰의 앱은 리소스가 제한되어 있어 새로운 앱 여러 개를 동시에 사용자에게 제공하기 어렵다. 따라서, 운영체제에서 새로운 앱을 위한 공간을 확보하도록 언제든지 일부 앱 프로세스를 종료시킬 수 있다. 또한, 앱을 시작하는 경로는 앱 런처 아이콘을 클릭하는 순간뿐만 아니라 타 앱에서 연결되어 시작될 수 있고 알림을 클릭하여 앱을 시작할 수 있다. 여러 곳에서 시작되는 것은 앱을 시작할 수 있는 앱의 구성 요소(Activity, Fragment, Service 등)가 있기 때문이다. 이 앱의 구성 요소는 개별적이고 비순차적으로 시작되고 운영체제에 의해서 언제든지 종료될 수 있기 때문에 앱 구성요소에 애플리케이션 데이터나 상태를 저장해서는 안되고 앱 구성요소가 서로 종속되면 안 된다. 앱..
😶 DataStore 개요 DataStore 는 SharedPreferences 를 대체하는 것을 목표로 한 향상된 데이터 저장 솔루션으로 나온 Android Jetpack 라이브러리이다. Coroutines 과 Flow 를 사용하여 데이터를 비동기적으로 일관성있게 읽고 저장한다. DataStore 는 Preferences DataStore 와 Proto DataStore 으로 나뉜다. Preferences DataStore 는 key 를 이용하여 데이터에 접근하고 저장한다. 타입 안전성을 보장하지 않는다. Proto DataStore 는 커스텀한 데이터 타입을 가진 객체로 데이터를 저장한다. Protocol buffers 를 사용하며, 스키마를 정의해야하지만 타입 안전성을 보장한다. dependency..
😶 Repository Pattern (레파지토리 패턴) 개요 레파지토리 패턴이란 디자인 패턴 중 하나로 앱의 나머지 부분으로부터 데이터 계층을 분리하는 패턴이다. 앱 아키텍처에서 권장하는 지침에 따르면, 사용자와 상호작용하며 화면을 그리거나 이벤트를 캡처하는 UI 관련된 모든 것을 제어하는 UI 계층(UI Layer)과 데이터와 관련된 작업을 하는 데이터 계층이 있다. 데이터 계층에서 데이터 유형 별로 Repository 클래스를 만들어 데이터 원본(웹 서비스, 캐시 등) 간의 충돌을 해결하고 데이터에 대한 변경 사항을 중앙 집중화할 수 있다. Repository 클래스에는 데이터를 가져오거나 처리하는 작업과 외부에서 데이터 엑세스에 대한 간결한 API 를 제공한다. ViewModel 에서 모든 데이터..
😶 Room 개요 데이터베이스를 안드로이드에서 쉽게 사용할 수 있는 방법은 Room 라이브러리를 사용하는 것이다. Room 은 Android Jetpack 의 일부인 지속성 라이브러리로 SQLite 데이터베이스를 관리하는 추상화 계층으로 작업 수행을 위한 특수 언어인 SQL 을 사용한다. Room 은 ORM(Oject Relational Mapping) 으로, 객체형 데이터베이스의 테이블을 Kotlin 에서 사용할 수 있는 객체와 매핑할 수 있다. 즉, 각 테이블은 클래스로 표시하고 이러한 테이블을 모델 클래스 혹은 엔티티(entity)라고 부른다. 데이터베이스에 사용되는 SQL 은 실제로 INTEGER, TEXT 로 표시된다. 하지만 Kotlin 의 데이터 유형은 Int, String 이다. 이러한 데..
😶 Extensions 살펴보기 상속하거나 데코레이터와 같은 디자인 패턴을 사용할 필요 없이 새로운 기능을 가진 인터페이스를 확장할 수 있는 기능을 Extensions 을 통해 수행할 수 있다. 수정할 수 없는 클래스 혹은 타사 라이브러리 인터페이스에 대해 새로운 함수를 작성할 수 있다. Extensions Function(확장 함수)의 예시는 다음과 같다. 예시 테스트 클래스의 확장 함수는 이름 앞에 테스트 클래스의 이름을 적고 점(.)으로 확장 함수의 이름으로 나머지 함수를 정의하면 된다. this 키워드로 확장하는 클래스를 참조할 수 있다. class TestClass(val member: T) { fun printLine() { println("TestList Class 의 printLine() ..
😶 Relational Database? 데이터베이스(Database)란 전자적으로 엑세스하고 기록할 수 있는 데이터의 구조화된 모음이다. 그 중에서 관계형(related) 데이터베이스는 데이터를 테이블, 열, 행으로 구성하는 일반적인 유형의 데이터베이스이다. 테이블은 다른 테이블을 참조할 수 있고 테이블 간의 관계를 가질 수 있다. 😶 SQL 관계형 데이터베이스에 단독으로 엑세스할 때 SQL 문법이 사용된다. SQL 은 구조화된 Query 언어를 의미하며 관계형 데이터베이스에서 데이터를 읽고 조작할 수 있도록 하는 언어이다. 일반적인 SQL 문은 다음과 같다. SELECT 데이터 테이블에 대한 구체적인 정보를 언을 수 있고 여러가지 필터된 결과를 얻을 수 있다. INSERT 테이블에 새로운 row 를 ..
😶 ListAdapter 개요 데이터 목록을 보여줄 때 주로 사용되는 View 는 RecyclerView 이다. 그 중 데이터를 관리하는 adapter 는 일반적으로 정적 데이터 목록을 표시한다. 데이터 리스트가 정의되면 목록을 보여준다. 나중에 데이터가 변경되고 데이터를 다시 정의해주면, 새로운 데이터 리스트 전체 목록이 업데이트될 것이다. 데이터 하나가 변할 때마다 전체 리스트 목록이 새로 고침되는 것은 데이터가 실시간으로 변동되는 환경(ex. 데이터베이스)에 적합하지 않다. (앱의 지속성 측면에서 충분하지 않다.) 데이터가 동적으로 변경되는 점을 고려한 기술로 ListAdapter 가 있다. ListAdapter 는 AsyncListDiffer 를 사용하여 이전 데이터 목록과 새 데이터 목록 간의 ..