개발노트/android7 Room DB를 통한 백업에 대한 고찰 유저가 최근 1시간 이내에 작성한 게시물들을 보여주고 빠르게 수정을 할 수 있도록 개선을 하는 과정을 생각하고 구현해보았다.. 1. 해당 구조를 도입했을 때의 기대 유저 입장에서 최근 작성한 글을 서버에서 불러오는데는 어쩔 수 없이 지연 시간이 발생할 수 밖에 없다. 그러나 1시간 이내에 작성한 글을 서버로 보냄과 동시에 room db에 저장하여 백업을 한다면? 서버를 거치지 않고 내부 db에서 바로 꺼내쓸 수 있을 것이다. 그렇다면 유저 입장에서는 최근 작성 글을 빠르게 수정할 수 있는 경험을 가질 수 있을 것이다. 또한 1시간 이내에 작성한 글들을 명시적으로 보여줌으로써 본인의 글을 수시로 확인할 수 있게 하여 앱의 사용 시간을 늘릴 수 있을 것이다. 또한 수정이 완료된 이후에는 백업 데이터를 먼저 .. 2024. 4. 16. dagger- hilt 참고 블로그 https://kotlinworld.com/111 2024. 4. 8. 안드로이드에서의 디자인 패턴(MVC/MVP/MVVM) 개요 안드로이드의 디자인 패턴을 다시 생각해보자 안드로이드에의 디자인 패턴은 대표적으로 3가지로 말할 수 있다. MVC/MVP/MVVM MVI패턴도 존재하지만, 아직은 내가 다뤄볼만한 디자인 패턴이 아닌 것 같다. 디자인 패턴의 사용 이유 관심사를 분리하기 위해서다. 관리사를 분리함으로써 프로그램을 좀 더 안정적이고 확장성 높게 만들기 위함이다. 관심사를 분리하지 않으면, 하나의 코드가 모든 클래스 안에 난잡하게 섞일 것이다. 레이아웃,데이터 처리, 이벤트 처리가 하나로 합쳐져 있다면, 이후 유지보수는 물론이거니와 협업 시 코드 읽기, 테스팅이 불가능할정도로 혼돈 그 자체일 것이다. 그렇기 때문에 우리는 본인이 개발하는 프로그램에 알맞게 디자인 패턴을 선택하여 관심사 분리를 통한 코드 확장성 및 안정성을.. 2024. 3. 27. Room Database 1. 의존성 안정화 버전 확인 : https://developer.android.com/topic/libraries/architecture/room?hl=ko Room 지속성 라이브러리 | Android 개발자 | Android Developers Room 라이브러리 사용 방법을 알아봅니다. developer.android.com plugins { id("com.android.application") id("org.jetbrains.kotlin.android") id("kotlin-kapt") } val room_version = "2.6.0-rc01" implementation("androidx.room:room-runtime:$room_version") annotationProcessor("andro.. 2024. 1. 16. SingleLiveEvent import android.util.Log import androidx.annotation.MainThread import androidx.lifecycle.LifecycleOwner import androidx.lifecycle.MutableLiveData import androidx.lifecycle.Observer import java.util.concurrent.atomic.AtomicBoolean /** * A lifecycle-aware observable that sends only new updates after subscription, used for events like * navigation and Snackbar messages. * * * This avoids a common pr.. 2024. 1. 16. ViewModel,Repository 1) ViewModel class ViewModel( private val repository: HomeRepository ) : ViewModel() { } 2) Factory 패턴 class ViewModelFactory( ) : ViewModelProvider.Factory { override fun create(modelClass: Class): T { if (modelClass.isAssignableFrom(HomeViewModel::class.java)) { return HomeViewModel( HomeRepositoryImpl(RetrofitClient) ) as T } else { throw IllegalArgumentException("Not found ViewModel class.").. 2024. 1. 16. 이전 1 2 다음