Android Room Database 사용하기 2

사용 버전: Android Studio 4.0

사용 언어: Kotlin 1.3.72


안드로이드 Room Database 사용하기 2를 알아보겠습니다.



안드로이드 Room Database 사용하기 1에 이어서 진행하겠습니다.

이번에는 Coroutines를 사용합니다.

Coroutines는 thread를 하나 더 만들어서 Main thread를 멈추지 않고 작업을 진행합니다.


1에서 만든 ViewModel을 다음과 같이 수정합니다.

여기서는 AndroidViewModel을 사용하여 Application 값도 받을 수 있게 해줍니다.



그리고 ViewModelFactory를 만듭니다.




FirstFragmentViewModelFactory를 만들었습니다.




아래와 같이 수정합니다.




Fragment에 다음을 추가합니다.




viewModel로 갑니다.

아래를 추가합니다.




Job은 coroutines를 관리합니다.

uiScope는 어떤 thread에서 실행할 것인지를 정합니다. 여기서는 Main thread에서 작동합니다.

uiScope.launch는 coroutine을 시작한다는 뜻입니다.

suspend는 coroutine에서만 불러와집니다. withContext가 완료될 때까지 기다립니다.

withContext는 실행된 coroutine을 Dispatchers.IO로 옮깁니다.

- Dispatchers.Main은 UI와 연관된 작업을 할 때 사용

- Dispatchers.IO는 파일의 입출력 작업을 할 때 사용

- Dispatchers.Default는 CPU를 많이 사용하는 작업에 사용






Fragment로 갑니다.

아래 버튼을 눌렀을 때, 위의 ViewModel에 있는 newInfoinsert()가 실행되도록 합니다.









다시 ViewModel로 갑니다.

이번에는 database의 내용을 보는 함수를 만듭니다.

onCleared도 새롭게 작성해 줍니다.








Fragment로 가서 새로운 함수를 추가해 줍니다.





실행합니다.





버튼을 누르면, 데이터 베이스에 잘 들어간 것이 보입니다.






WhoAmI: Entity 정의.
WhoAmIDatabaseDao: Query 정의.
WhoAmIDatabase: Instance(Database) 생성.


끝.



카테고리: Android

댓글

이 블로그의 인기 게시물

Python urllib.parse.quote()

tensorflow tf.random.uniform()

KiCad 시작하기 2 (PCB 만들기)

Python OpenCV 빈 화면 만들기

Android Compose Coil library

Android Notification with Full Screen

tensorflow tf.expand_dims()

KiCad 시작하기 4 (기존 회로도 수정 및 추가)

About Subnet Mask App

Android Minimum touch target size