반응형

전체 글 128

[Android] Basic concept of Room Database and Query example

Android Room을 구성하는 세 가지 요소 Data class (Entity) Foreign Key Data access objects (DAO) @Query @Insert @Update @Transaction RoomDatabase class CREATE TABLE DROP TABLE ALTER TABLE INSERT TABLE Android Room을 구성하는 세 가지 요소 data class dao room database Database class에 dao를 선언한다. Database class에 dao를 통해서 데이터베이스 쿼리를 사용할 수 있다. 쿼리 데이터를 data class로 정의할 수 있다. Data class (Entity) 데이터베이스에 테이블을 kotlin android에서 ..

[Android] Compose TabRow, Pager 예제. 화면 탭 버튼 예제

결과물 예시 Add a dependency TabRow Pager 결과물 예시 Add a dependency TabRow는 기본 Compose 프로젝트 안에 들어있지만, Pager는 따로 추가를 해야 한다. 이전에 Pager는 com.google.accompanist dependemcy 안에 있었지만, 현재 compose-foundation으로 이전됐다. 작성일 기준 최신 버전은 1.4.3 버전이다. TabRow TabRow는 Tab button을 활용해서 화면 전환을 할 때 사용할 수 있도록 설계된 Compose 함수이다. XML View를 활용할 때 사용했던 TabLayout과 비슷하다. 사용 방식은 TabRow Compose 함수를 만들고 블럭 안에 forEach 형식으로 필요한 만큼 Tab Com..

[RxJava] flatMap, concatMap, switchMap

Observable transformation flatMap() concatMap() switchMap() Conclusion Observable transformation 현재 구독 중인 Observable 객체가 있고 이 객체의 결과 값을 변환해야 하는 경우가 종종 있다. 반드시 확장하고 더 풍부한 객체를 만들기 위함이 아니라, Observable 객체에서 반환되는 각각의 요소들을 merge 하는 과정을 거쳐 이러한 작업을 수행할 수도 있다. flatMap() flatMap() 메서드는 Original Observable 함수에서 새로운 Observable 함수를 생성한다. Original Observable에 적용된 결과를 Merge하여 내보낸다. 값을 변환하는 중 새로운 값이 앞으로 끼어들 수 있..

Mobile/RxJava 2023.07.26

[Kotlin] Dive into Concept of Kotlin Coroutine Context. Dispatchers, Job and Deferred.

소개 Dispatchers Android Dispatchers Dispatchers.Default Dispatchers.IO Dispatchers.IO & Dispatchers.Default Job Deferred Job States 소개 CoroutineContext는 코루틴 실행을 어떻게 할 것인지에 대한 요소들을 결정한다. Coroutine은 항상 Kotlin 표준 라이브러리에 정의된 CoroutineContext 타입의 값으로 표시되는 일부 Context에서 실행된다. CoroutineContext는 다양한 요소의 집합이다. 주요 요소는 Job, Dispathcer, ExceptionHandler 등이 있다. 이러한 요소들은 각각의 키 값을 갖고 있으며, CoroutineContext로 등록된다...

[Kotlin] Dive into Concept of Kotlin Coroutine and CoroutineContext. (suspend keyword)

소개 CoroutineScope CoroutineContext CoroutineBuilder suspend keyword 예제 Structured concurrency Coroutine continuation 소개 코루틴은 일시 중단이 가능한 계산의 인스턴스이다. 안드로이드의 UI 스레드 실행을 중단시키지 않고 다른 스레드에서 계산을 실행할 수 있다는 점에서 개념적으로 스레드와 유사하다. 그러나 코루틴은 특정 스레드에 바인딩되지 않고, 한 스레드에서 실행을 일시 중단하고 다른 스레드에서 다시 시작할 수 있다. 말이 어려울 수 있다. 중요한 점은 코루틴은 일시 중단이 가능하다는 것이다. Coroutine을 구성하는 요소로 CoroutineScope, CoroutineContext, CoroutineBuil..

[Android] Android Preferences DataStore. ( + RxJava)

목차 소개 Preferences DataStore 및 Proto DataStore Protocol Buffers DataStore 사용 규칙 설정 add a dependency Set a DataStore 일반적인 경우 Read values Write values Collect values RxJava를 사용하는 경우 Read values Set values Observe values Shared Preferences를 Preferences DataStore로 Migration 결론 소개 DataStore는 프로토콜 버퍼를 사용하여 키-값 쌍 또는 유형이 지정된 객체를 저장할 수 있는 데이터 저장소 솔루션이다. DataStore는 Kotlin Coroutine, Flow를 사용하여 비동기적이고 일관된 트..

[Kotlin] Compare two formatted Date Strings

목차 Import Library 날짜 데이터 생성 날짜 비교 예제 결과 결론 Import Library import java.text.SimpleDateFormat import java.time.Duration import java.time.LocalDateTime import java.util.* 날짜 데이터 생성 // 현재 시간 가져오기 val format = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS", Locale.getDefault()) val date = try { val millis = Calendar.getInstance(TimeZone.getTimeZone("UTC")).timeInMillis format.format(Date(millis)) } cat..

[Android] Example of WorkManager. (+ RxJava or Coroutine) WorkManager를 사용하는 이유.

목차 소개 WorkManager의 이점 WorkManager가 적합한 작업 Dependency 추가 AndroidManifest.xml 파일 수정 필요한 파일 생성 1. Worker Class 파일을 생성합니다. 2. Module 생성 (Only Koin) 3. Koin Initialize (Only Koin) 4. MainActivity에서 WorkManager 생성 WorkManager를 구성하는 주요 요소 Worker WorkRequest 결론 소개 WorkManager는 상황별 실행과 보장된 실행을 조합하여 적용해야 하는 백그라운드 작업을 위해 권장되는 솔루션입니다. 상황별 실행을 적용하면 WorkManager가 최대한 빨리 백그라운드 작업을 실행합니다. 보장된 실행을 적용하면 WorkManage..

[Android] Shared Preferences. 앱 내 간단한 데이터 저장에 사용.

목차 Shared Preferences Shared Preferences 객체에 접근 Shared Preferences에 쓰기 Shared Preferences에서 값을 삭제하기 Shared Preferences에서 읽기 결론 Shared Preferences 크기가 크지 않은 비교적 간단한 데이터를 key-value 형태로 저장할 수 있게 도와주는 라이브러리입니다. (Shared Preferences API와 Preference API는 다릅니다.) Shared Preferences는 애플리케이션 내부에 저장됩니다. 따라서 앱을 지우거나 데이터를 삭제하면 Shared Preferences에 저장된 값 또한 사라지게 됩니다. Shared Preferences는 해당 경로에 .xml 형태로 저장됩니다. d..

[Android] Android Studio에서 logcat이 동작하지 않는 이슈 해결.

디버깅을 위해 logcat을 확인해야 할 때, 종종 원하는 로그가 나오지 않을 때도 있습니다. 다양한 원인이 있는데 그중 몇 가지를 소개하려고 합니다. 1. 단순 USB 디버깅 오류 이 경우 단순 에러일 가능성이 높습니다. USB 연결을 다시 하면 정상적으로 로그캣이 작동될 가능성이 높습니다. 2. Invalid Cache 혹은, 캐시 데이터를 날리면 로그가 돌아오기도 합니다. 이를테면, 여러 기기를 테스트하던 중 이전 디바이스와 현재 디바이스 충돌로 인하여 무언가 에러가 발생했을 때 Invalid cache가 효과적일 수 있습니다. 3. USB 디버깅을 허용한 디바이스 로그 버퍼 사이즈 저는 3번 케이스였습니다. 아주 기본적인 라이프 사이클 관련 로그는 나오는데 제가 설정한 로그, 터치 이벤트 로직도 ..

Mobile/Issues 2023.05.15