일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- HotStream
- koltin
- 키보드 숨기기
- DiffUtilCallback
- Kotlin
- 계층 분리
- error
- fragment
- 뷰모델팩토리
- 어댑터 효율적으로 사용하기
- compose
- list adapter
- hilt
- 안드로이드 DB
- 안드로이드
- 앱개발
- 코틀린
- ColdStream
- 의존성주입
- notifyDataSetChanged 비효율
- DI
- Android
- SQLite
- 화면전환
- 다른버전 다운로드
- notifyDataSetChanged 대신 사용하기
- Clean Architecture
- android aac
- 안드로이드 스튜디오 구버전 다운받기
- 클린아키텍처
- Today
- Total
목록안드로이드 (20)
DoReMi

Clean Architecture란? 클린아키텍처는 소프트웨어 시스템의 구조를 설계할 때 지켜야 할 원칙과 방법을 정의한 개념이다. 복잡한 소프트웨어 시스템을 보다 관리 가능하고 유지보수 가능한 형태로 구축하기 위한 지침을 제공한다. 클린아키텍처 사용 이유 각 계층이 분리되어 있기 때문에 한 계층을 변경해도 다른 계층에 영향을 미치지 않아 유지보수가 쉽다. 의존성을 주입하여 유닛 테스트 및 통합 테스트를 수행하기 용이하게 한다. 하나의 시스템의 각 부분을 독립적으로 개발하고 테스트 할 수 있는 환경을 조성한다. 시스템의 변경이나 업그레이드가 필요할 때 전체 시스템을 다시 작성하지 않고 특정 부부만 수정할 수 있다. 예시) Retrofit의 ConvertFactory를 Moshi Factory로 사용하는 ..
Hilt Hilt는 안드로이드에 쉽게 의존성을 관리할 수 있는 라이브러리이다. Dagger를 기반으로 만들어진 라이브러리이며, 기존에 많이 사용 되던 Dagger보다 훨씬 사용하기 편하다. 사용하기 프로젝트 수준 build.gradle buildscript { ... dependencies { ... classpath 'com.google.dagger:hilt-android-gradle-plugin:$version' } } 앱수준 build.gradle ... plugins { id 'kotlin-kapt' id 'dagger.hilt.android.plugin' } android { ... compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 ta..
뷰모델 팩토리란? 뷰모델 팩토리는 파라미터가 있는 뷰모델을 객체화 시키는 역할을 한다. 이는 UI-컨트롤러끼리 데이터를 주고받으면서 뷰모델에 어떤 인수를 넣어 초기화하고 싶을 때 뷰모델 팩토리를 이용해 초기화한다. 뷰모델 팩토리를 사용하는 이유 주로 커스텀한 생성 로직을 구현하거나 **의존성 주입(Dependency Injection)**을 쉽게 하기 위함입니다. ViewModelFactory를 사용하면 ViewModel 인스턴스를 생성할 때 특정한 매개변수나 초기화 로직을 적용할 수 있습니다. 적용 코드 View에서 ViewModel 선언 시 private val viewModel: HomeViewModel by viewModels { ViewModelFactory() } 이런식으로 ViewModelF..

State Flow 왜 써야할까? State Flow란? StateFlow 는 현재 상태와 새로운 상태 업데이트를 collector에 내보내는 Observable한 State holder flow 입니다. StateFlow는 SharedFlow의 한 종류이며, LiveData에 가장 가깝습니다. 항상 값을 가지고 있고 오직 한 가지 값만 가집니다. 그러므로 초기값이 존재해야합니다. 여러 개의 collector를 지원합니다. 즉 flow를 공유할 수 있습니다. collector 수에 상관없이 항상 구독하는 것의 최신 값을 받습니다. Hot Stream 방식으로 collect할 때마다 flow가 재실행되지 않습니다. LiveData의 문제점 LiveData를 대신해서 StateFlow를 사용하게 되는 것인데..

Room이란! 공식문서 참조! https://developer.android.com/training/data-storage/room?hl=ko#kts Room을 사용하여 로컬 데이터베이스에 데이터 저장 | Android 개발자 | Android Developers Room 라이브러리를 사용하여 더 쉽게 데이터를 유지하는 방법 알아보기 developer.android.com Room은 AAC(Android Architecture Components), 스마트폰 내장 DB에 데이터를 저장하기 위해 사용하는 라이브러리이다!! ORM(Object Relational Mapping)라이브러리로서 DB 데이터를 Java 또는 코틀린 객체로 매핑해준다. SQLite를 내부적으로 사용하고 있지만, DB를 구조적으로 분..
Coil 이란? Coroutine Image Loader의 약자! 코루틴으로 만들어지 가벼운 Android 백앤드 이미지 로딩 라이브러리 공식문서 근데 Glide쓰면 안됌?? 이미 글라이드는 성능과 신뢰성이 검증되고 확실하게 자리잡은 이미지 라이브러리입니다. 그러면 Coil의 장점을 봐야겠죠? Coil의 장점 빠르다 메모리와 디스크의 캐싱, 메모리의 이미지 다운 샘플링, Bitmap 재사용, 일시정지/취소의 자동화 등등 수 많은 최적화 작업을 수행한다. 가볍다 Glide, Fresco보다 상대적으로 가볍다. COIL은 2000개 가량의 method를 해당 애플리케이션의 apk에 추가하는데 이는 Glide나 Frecso보다 훨씬 적고 Picasso와 비슷한 수준입니다. 사용하기 쉽다 심플함과 최소한의 bo..

코루틴을 왜 쓰게 되었는가..? 웹, 앱 분야에서 비동기 처리의 핵심으로 RX programming을 사용했다. 하지만 구글이 안드로이드 공식 언어를 코틀린으로 변경한 이후로 비동기처리를 coroutine으로 바꾸었다. 코루틴을 사용하면 비동기처리를 쉽게 할 수 있기 때문에 Coroutine Scope Coroutine Scope 선언 방식 CoroutineScope(Dispatchers.IO).launch { //code } 이런식으로 View에서 lifecycleScope를 사용하면 View의 라이프사이클과 연계하여 사용할 수 있다. //activity lifecycleScope.launch(Dispatchers.IO) { //code } 라이프사이클이 파괴되면 스코프는 취소 된다. Dispatche..
//저장 메서드2 fun saveData2(testData: TestData, callback: (Task) -> Unit) { val db = FirebaseFirestore.getInstance() db.collection("reviews").add(testData).addOnCompleteListener(callback) } //가져오기 메서드 fun getData(list: MutableList, callback: (Task) -> Unit) { val db = FirebaseFirestore.getInstance() val personalityRef = db.collection("reviews").whereArrayContainsAny("personality", list) personalityR..