본문 바로가기
반응형

개발/Android31

[Android] DataStore란? (Preference DataStore, Proto DataStore) SharedPreference를 대체하는 새로운 데이터 저장소인 DataStore가 나왔다. DataStore는 Kotlin 코루틴 및 Flow를 사용하여 비동기적이고 일관된 트랜잭션 방식으로 데이터를 저장한다. DataStore는 protocol buffers를 사용하는 크게 2가지 유형이 있다. key-value (Preference DataStore) typed objects (Proto DataStore) 이 2가지 DataStore는 아래의 차이가 있다. Preference DataStore : SharedPreference와 마찬가지로 스키마를 정의하지 않고 키를 기반으로 데이터에 액세스 한다. Proto DataStore : Protocol Buffer를 사용하여 스키마를 정의한다. Prot.. 2023. 1. 19.
[Android] MVVM 패턴 및 Clean Architecture, Android Jetpack 적용 예제 개요 이번 포스팅에서는 Android에서 많이 애용하는 설계 패턴인 MVVM과 Clean Architectrue, Android Jetpack을 사용하여 만든 프로젝트를 소개하려고 합니다. Open API의 한 종류인 omdbapi를 사용하여 만들었습니다. 로그인 시 하루에 1,000건까지 무료로 사용할 수 있습니다. https://www.omdbapi.com/ OMDb API - The Open Movie Database www.omdbapi.com 해당 프로젝트의 이름은 MovieBrowser이고 간단한 영화 검색 기능과 즐겨찾기 기능을 사용할 수 있습니다. 프로젝트에 Clean Architecture를 적용하였고 각 Layer는 다음과 같은 종속성을 가지고 있습니다. Data와 Domain Laye.. 2022. 11. 2.
[Android] 여러 개의 LiveData를 한번에 핸들링하는 MediatorLiveData MediatorLiveData란? LiveData의 하위 클래스로 다른 LiveData 객체를 Observe하고 해당 객체의 OnChanged 이벤트를 받습니다. 즉, 하나의 MediatorLiveData에 여러 개의 LiveData를 등록하고 한 번에 핸들링할 수 있습니다. 주요 함수로는 addSource() : observe할 LiveData와 수행할 로직을 추가 removeSource() : 추가된 LiveData 삭제 MediatorLiveData.java 파일을 살펴보면 public class MediatorLiveData extends MutableLiveData { private SafeIterableMap> mSources = new SafeIterableMap(); MediatorLive.. 2022. 10. 13.
[Android] 두 개의 RecyclerView 사이에서 Drag and Drop 구현하기 개요 일반적으로 ReyclerView에서 Drag and Drop을 구현할 때는 ItemTouchHelper를 사용해서 구현합니다. 하지만 두 개 RecyclerView 사이에서 Drag and Drop을 구현하기에 어려움이 있어 DragListener를 통해 구현해 보았습니다. 해당 Drag and Drop을 구현하기 위해 ListAdpater, ViewModel, Databinding을 사용하였습니다. 다음은 실제로 구현한 화면입니다. 설명 우선 Drag and Drop을 구현하기 위해 크게 2개가 필요합니다. DragListener : RcyclerView와 ViewHolder에 DragListenr를 등록하기 위한 abstarct class입니다. ItemModifyListener : Reycle.. 2022. 9. 17.
[Android] 런처앱(Launcher app)에서 Widget 생성하기 Widget을 사용하기 위해 알아야 하는 기본 클래스 1) AppWidgetHost 홈 화면과 같이 UI에 앱 위젯을 삽입하고자 하는 AppWidget 서비스와의 상호작용을 제공하는 클래스이다. 2) AppWidgetHostView 위젯이 표시되어야 할 때마다 래핑되는 프레임입니다. 3) AppWidgetManger AppWidget의 상태를 업데이트하고 설치된 AppWidget provider에 대한 정보와 그 위젯과 연관된 여러 가지 상태에 대한 정보를 얻을 수 있는 클래스이다. Launcher 앱에 등록된 위젯 생성 및 관리 위젯을 생성하기 위해서는 다음과 같은 과정으로 이루어집니다. 현재 Launcer 앱에 있는 모든 위젯 가져오기 해당 widget의 packageName, className을 가.. 2022. 9. 1.
[Android] DataBinding이란? 오늘은 ACC의 하나인 Databinding에 대하여 공부해봅시다. Databinding은 안드로이드 앱에서 MVVM Architecture을 구현하기 위해 주로 사용합니다. 보통 ViewModel과 LiveData와 같이 사용합니다. 1️⃣ DataBinding이란? 기존의 View를 참조하기 위해서 보통 findViewById를 사용하였다. findViewById는 런타임에 view계층을 탐색하여 찾습니다. View가 깊어질수록 탐색 시간이 더 길어지므로 사용자 입장에서 앱을 사용할 때 반응을 느리게 할 수 있는 요소가 됩니다. 하지만 Databinding을 사용하면 컴파일 타임에 activity나 Fragment와 layout을 연결할 수 있습니다. 컴파일러는 activity가 생성될 때 bindi.. 2022. 8. 14.
반응형

loading