개발/안드로이드2024. 6. 10. 16:45MediaStore.Images.Media.insertImage deprecated

https://small-stepping.tistory.com/1005 WorkManager로 백그라운드 작업WorkManager란?WorkManager는 상황별 실행과 보장된 실행을 조합하여 적용해야 하는 백그라운드 작업을 위한 아키텍처 구성요소로서 Android Jetpack의 일부이다. 상황별 실행을 적용하면 WorkManager가 최대small-stepping.tistory.com 위 공부를 할 때, 따라한 Jetpack Compose Tutorial 프로젝트에서 사용한 이미지를 저장하는 파트에서 Media.insertImage를 사용하는 부분이 존재했는데, 해당 부분이 API 레벨 29에서부터 deprecated 되어 수정이 필요했다. https://stackoverflow.com/questio..

WorkManager로 백그라운드 작업
개발/안드로이드2024. 6. 10. 16:21WorkManager로 백그라운드 작업

WorkManager란?WorkManager는 상황별 실행과 보장된 실행을 조합하여 적용해야 하는 백그라운드 작업을 위한 아키텍처 구성요소로서 Android Jetpack의 일부이다. 상황별 실행을 적용하면 WorkManager가 최대한 빨리 백그라운드 작업을 실행한다. 보장된 실행을 적용하면 WorkManager가 사용자가 앱을 벗어난 경우를 비롯한 다양한 상황에서 로직을 처리하여 작업을 시작합니다. WorkManager는 매우 유연한 라이브러리로, 다음과 같은 이점이 있다.비동기 일회성 작업과 주기적인 작업 모두 지원네트워크 상태, 저장공간, 충전 상태와 같은 제약 조건 지원동시 작업 실행과 같은 복잡한 작업 요청 체이닝한 작업 요청의 출력이 다음 작업 요청의 입력으로 사용됨API수준 14까지 호환됨..

Room DB 사용시 앱을 재시작할 때마다 데이터가 초기화 된다...?
개발/안드로이드2024. 6. 6. 16:56Room DB 사용시 앱을 재시작할 때마다 데이터가 초기화 된다...?

Jetpack Compose 튜토리얼의 해당 과제를 수행 중에 있다. https://developer.android.com/codelabs/basic-android-kotlin-compose-flight-search?hl=ko&continue=https%3A%2F%2Fdeveloper.android.com%2Fcourses%2Fpathways%2Fandroid-basics-compose-unit-6-pathway-3%3Fhl%3Dko%23codelab-https%3A%2F%2Fdeveloper.android.com%2Fcodelabs%2Fbasic-android-kotlin-compose-flight-search#0 프로젝트: Flight Search 앱 만들기  |  Android Developers사..

DataStore를 사용한 로컬에 환경설정 저장
개발/안드로이드2024. 5. 30. 14:59DataStore를 사용한 로컬에 환경설정 저장

관계형 데이터를 저장할 필요가 없는 경우 SQL, Room이 아닌 DataStore를 사용하는 것이 간단한 솔루션이 될 수 있다. DataStore Jetpack 구성요소는 오버헤드가 낮은 작고 간단한 데이터 세트를 저장하는 좋은 방법이다. DataStore에는 서로 다른 두 가지 구현(Preferences DataStore, Proto DataStore)이 있다.Perferences DataStore는 키-값 쌍으로 저장한다. 값은 String, Boolean, Integer와 같은 Kotlin의 기본 데이터 유형일 수 있다. 복잡합 데이터 세트는 저장하지 않으며, 사전 정의된 스키마도 필요 없다. 기본적으로 사용자 환경설정을 기기에 저장하는 식으로 쓰인다.Proto DataStore는 맞춤 데이터 유..

Room을 사용한 데이터 유지
개발/안드로이드2024. 5. 27. 18:05Room을 사용한 데이터 유지

Android Jetpack 'Compose 사용 시 알아야 하는 Android 기본 사항' 강의'단원 6: 데이터 지속성을 위해 Room 사용'의 4번 챕터 내용을 기반으로 학습 후 작성하는 글입니다.자세한 내용은 하단 링크를 참고하세요. https://developer.android.com/courses/pathways/android-basics-compose-unit-6-pathway-2?hl=ko 데이터 지속성을 위해 Room 사용  |  Android Basics Compose - Use Room for data persistence  |  Android DevelopersRoom 라이브러리를 사용하여 Android 앱에서 관계형 데이터베이스를 쉽게 만들고 사용할 수 있습니다.developer...

로컬 테스트 설정
개발/안드로이드2024. 5. 23. 18:33로컬 테스트 설정

이전 글에서 이어지는 내용입니다.https://small-stepping.tistory.com/957 종속 항목 삽입이전글에서 이어지는 내용입니다.https://small-stepping.tistory.com/956 UI 레이어와 데이터 레이어 분리레이어를 분리하는 이유코드를 여러 레이어로 분리하면 앱의 확장성이 높아지며 앱이 더 견고해small-stepping.tistory.com   로컬 테스트 설정이전 글들에서 UI 레이어와 데이터 레이어 분리 및 종속 항목 삽입으로 ViewModel에서 REST API 서비스와의 직접적인 상호작용을 추상화하는 저장소 구현에 이르기 까지 MarsPhotos 앱을 리펙터링하였다. 이 과정을 통해 목적이 제한된 작은 코드 조각을 테스트할 수 있다. 기능이 제한된 작은 ..

종속 항목 삽입
개발/안드로이드2024. 5. 23. 16:37종속 항목 삽입

이전글에서 이어지는 내용입니다.https://small-stepping.tistory.com/956 UI 레이어와 데이터 레이어 분리레이어를 분리하는 이유코드를 여러 레이어로 분리하면 앱의 확장성이 높아지며 앱이 더 견고해지고 테스트하기 더 쉬워진다. 또한 경계가 명확히 정의된 여러 레이어를 사용하면 여러 개발자small-stepping.tistory.com   클래스가 작동하려면 다른 클래스의 객체가 필요한 경우가 많다. 클래스에 다른 클래스가 필요한 경우 필요한 클래스를 종속 항목이라고 한다. 다음 예에서 Car 객체는 Engine 객체에 종속된다.필요한 이 객체를 클래스가 가져오는 방법에는 두 가지가 존재한다. 클래스가 필요한 객체 자체를 인스턴스화 하는 것interface Engine { f..

UI 레이어와 데이터 레이어 분리
개발/안드로이드2024. 5. 23. 15:30UI 레이어와 데이터 레이어 분리

레이어를 분리하는 이유코드를 여러 레이어로 분리하면 앱의 확장성이 높아지며 앱이 더 견고해지고 테스트하기 더 쉬워진다. 또한 경계가 명확히 정의된 여러 레이어를 사용하면 여러 개발자가 서로에게 부정적인 영향을 주지 않고 동일한 앱을 더 쉽게 작업할 수 있다. Android의 권장 앱 아키텍처에는 앱에 최소한 UI 레이어와 데이터 레이어가 반드시 있어야 한다고 명시되어 있다.  데이터 레이어 정의데이터 레이어는 앱의 비즈니스 로직과 앱 데이터 소싱 및 저장을 담당한다. 데이터 레이어는 단방향 데이터 흐름 패턴을 사용하여 UI 레이어에 데이터를 노출한다. 데이터는 네트워크 요청, 로컬 데이터베이스, 기기의 파일 등 여러 소스에서 가져올 수 있다. 앱에 데이터 소스가 두 개 이상 있을 수도 있다. 앱이 열리면..

코루틴 동기와 비동기, 코루틴 용어
개발/안드로이드2024. 5. 21. 14:48코루틴 동기와 비동기, 코루틴 용어

1. 코루틴 동기와 비동기뛰어난 사용자 경험을 제공하기 위해서는 동시 실행이라는 중요한 기술이 필요하다. 동시 실행이란, 앱에서 여러 태스크를 동시에 실행하는 것이다. 예를 들어, 앱은 웹 서버에서 데이터를 가져오거나 기기에 사용자 데이터를 저장하는 동시에 사용자 입력 이벤트에 응답하고 적절하게 UI를 업데이트할 수 있다. 앱에서 동시에 작업하기 위해선 Kotlin의 코루틴이라는 것을 사용한다. 코루틴을 사용하면 코드 블록의 실행을 정지했다가 나중에 다시 시작할 수 있으며 그동안 다른 작업도 수행할 수 있다. 코루틴을 사용하면 비동기 코드를 더 쉽게 작성할 수도 있다. 즉, 한 태스크를 완전히 완료하지 않아도 다음 태스크를 시작할 수 있으므로 여러 태스크를 동시에 실행할 수 있다.  동기 코드동기 코드에..

적응형 앱, 반응형 UI 탐색
개발/안드로이드2024. 5. 16. 17:29적응형 앱, 반응형 UI 탐색

중단점이란?적응형 앱을 만들려면 화면 크기에 따라 레이아웃이 변경되도록 해야 한다. 레이아웃 변경이 이루어지는 측정 지점을 중단점이라고 한다. Material Design은 대부분의 Android 화면을 처리하는 체계적인 중단점 범위를 만들었다.   이 중단점 범위 표에서는 앱이 화면 크기가 600dp 미만인 기기에서 실행 중인 경우 모바일 레이아웃을 표시해야 함을 보여준다.  창 크기 클래스 사용하기Compose에 도입된 WindowSizeClass API를 사용하면 Material Design 중단점 구현이 간단해진다.창 크기 클래스는 너비와 높이에 대해 소, 중, 대형의 세 가지 크기 카테고리를 도입한다.   프로젝트에서 WindowSizeClass API를 구현하기 위해 다음 단계를 따라야한다....

image