본문 바로가기
반응형

분류 전체보기148

[Android] Room Migration : 데이터베이스 테이블 수정하기 개발을 하다보니 Room의 엔티티를 바꾸거나 컬럼 속성을 바꿔야 하는 경우가 발생했다. Sqllite을 기반으로 했기 때문에 쿼리문도 Sqllite로 작성하면 된다. 여기에서 발생한 이슈 사항을 정리하는 포스팅이다! Room Migration 데이터베이스에 테이블이 추가, 삭제되는 등 변경이 발생했을 때 버전만 올린다면 기존의 데이터에 영향을 끼칠 수 있다. Migration을 하기 위해서는 다음과 같은 순서를 따르면 된다. 데이터베이스의 버전 수정하기 (테이블을 추가하거나 삭제한다면 entities도 수정하기) Migration 정보를 담을 Migration 객체 생성하기 데이터베이스에 Migration 객체 추가하기 1. 데이터베이스 버전 수정하기 @Database(entities = [...], v.. 2022. 3. 26.
[Android] 조회, 수정이 가능한 Room Database 디버깅 라이브러리 개발을 하다보니 당연히 Room을 사용하게 되었고, 서버로부터 받은 데이터를 Room에 넣고 삭제하고 테스트를 해보다보니 Room에 잘못된 데이터가 들어가는 경우가 있었다. 그래서 이번에는 조회 뿐만 아니라 데이터 수정이 가능한 디버깅 툴을 알아보고 사용하게 되었다. Room 디버깅 🎁 사용한 Room 디버깅 툴 라이브러리 GitHub - amitshekhariitbhu/Android-Debug-Database: A library for debugging android databases and shared preferences - Make Debug A library for debugging android databases and shared preferences - Make Debugging Great.. 2022. 3. 10.
[Android] LiveData를 유연하게 사용하는 방법 (feat.Transformations) 이번 프로젝트를 하면서 LiveData와 Room을 연결하는 작업을 하던 도중, 사용자가 버튼으로 날짜를 바꾸면 바뀐 날짜에 대한 데이터 리스트를 Room에서 받아오고, 그 결과값을 LiveData에 넣어야 했다. 지금까지 알기로는 LiveData의 값은 직접 변경할 수 없고 MutableLiveData를 통해 변경한 값을 가져올 수 있었는데, 이 경우에는 LiveData의 값을 직접 바꿔야 한다는 문제에 봉착했다. [Android/Jetpack] AAC - LiveData LiveData 식별 가능한(Observable) 데이터 홀더 클래스 LiveData는 Activity, Fragment, Service 등 다른 앱 구성요소의 수명 주기를 고려(Lifecycle-aware)한다. 수명 주기 인식을 .. 2022. 3. 7.
[Android] 위젯 속성 지정하는 헷갈리는 코드 (feat. Kotlin) 개발을 하다보면 가끔 어.. 이 속성 코드로는 어떻게 지정하더라..? 하는 부분이 있어서 이 포스팅에 계속 정리해놓고 가끔 들여다 보려고 한다. FontFamily 코드로 지정 커스텀 font의 경우 res > font 폴더를 생성하고, 원하는 폰트 ttf 파일을 넣어준다. 그리고 font 폴더에 font.xml 파일을 만들어 폴더에 넣은 폰트들을 설정해주면 다음과 같이 사용할 수 있다. binding.tvDate.typeface = resources.getFont(R.font.~) ✅ 레이아웃 파일에서는 android:fontFamily="~" 이지만, 코드로 지정할 때는 typeface 속성을 사용함 TextSize 코드로 지정 Text의 크기의 단위는 sp로 지정하여 디바이스의 OS 설정의 글자 크.. 2022. 3. 4.
[Android] 화면 터치로 키보드 내려가게 하기 프로젝트에서 UI를 개발하다보니 키보드와 화면이 같이 올라가게 하거나, 키보드만 올라가게 해야 할 때가 생겼다. 키보드만 올라갈 때는 키보드에 가려진 위젯을 사용하기 위해서 사용자가 키보드를 내려야 하는데 이 과정을 편하게 하기 위해서 화면을 터치하면 키보드가 내려가게 끔 개발하고자 하였다. 화면 터치로 키보드 내려가게 하기 우선 코드는 Fragment에서 사용하였기 때문에 Fragment를 담고 있는 Activity를 불러와서 사용해야 했다. Activity에서 사용하는 경우에는 activity/requireActivity() 대신 this를 사용! private fun hideKeyboard() { if (activity != null && requireActivity().currentFocus !=.. 2022. 2. 25.
[DI/Android] Hilt 실습(2) (with. Codelab) 지난 포스팅이 너무 길어져서 이어서 작성하려고 한다. 확실히 예제 코드를 보면서 한번 더 복습하니까 확실히 이해가 잘 되는 것 같다. 빨리 프로젝트에 적용해봐야지 둑흔🖤 [DI/Android] Hilt 라이브러리 이해하기 Hilt 2020년 6월 Google에서 발표한 Android 전용 DI 라이브러리 Hilt는 프로젝트의 모든 Android 클래스에 컨테이너를 제공하고 수명 주기를 자동으로 관리함으로써 애플리케이션에서 DI를 사용하는 표준 junyoung-developer.tistory.com 4. 한정자 사용하기 한정자(Qualifier)는 특정 타입에 대해 여러 결합이 정의되어 있을 때, 각 결합을 식별하기 위해 사용 LoggerDataSource.kt interface LoggerDataSour.. 2022. 2. 12.
반응형