본문 바로가기

Android

[Android] Room 비동기 처리

https://www.youtube.com/watch?v=LRMfm458E3k&list=PLxTmPHxRH3VXHOBnaGQcbSGslbAjr8obc&index=5

출처: 오준석의 생존코딩 - 모던안드로이드

DB access는 Background에서 해야함 !!

 

* DB작업을 백그라운드에서 처리하도록 수정하기 - AsyncTask를 사용

1. AsyncTask를 extends한 InsertAsyncTask 클래스 생성.

2. 멤버에 TodoDao선언

3. 오버라이딩 함수 doInbackground(..) 메소드에서 TodoDao.insert(todos[0])등 db작업하기.

4. 버튼 온클릭리스너에 InsertAsyncTask(db.todoDao()).excute(new Todo(~~~)) 해서 처리

 

 

*코틀린에서는? coroutines를 사용! (java는 제공 x)

1. 코틀린 익스텐션 라이브러리 추가 ( implementation )

2. 액티비티에서 코루틴 쉽게 사용하기 위해서 라이프사이클 스코프 사용. 

 lifecycleScope.launch(Dispathchers.IO){

    db.todoDao().insert(Todo(~~~))

}

 

 

*참고

- 안드로이드에는  메인스레드, 워커 스레드 두가지 스레드가 있다.

- Dispathchers.IO -> 백그라운드스레드