Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
Tags
- android12
- Dynamic Programing
- alogrithm
- Jetpack Compose
- 안드로이드#코틀린
- android #androidstudio #zsh
- DFS
- Bluetooth Permission
- mutablestatelistof
- algorithm #
- androidstudio
- Android
- AlertDailog
- 백준 5052
- KioskMode
- mutablestateof
- cs #computer #network #internet
- algorithm
- android #androidstudio #fragmentdialog #kotlin
- BFS
- kotlin
- 안드로이드 앱 아키텍처
- 티스토리챌린지
- android #androidstudio #compose #kotlin
- 카카오로그인
- 오블완
- compose
- android #android studio #compose #kotlin
- android #google console
- algoritm
Archives
- Today
- Total
스태틱하게 개발중
[Android] RxJava를 사용하여 Room 데이터 사용하기 본문
RxJava를 사용하여 Room 데이터베이스는 비동기로 처리하는 방법을 정리해보려고 한다.
먼저 의존성 추가를 해준다.
implementation "androidx.room:room-rxjava2:2.2.6"
아래는 구글에서 제공하는 샘플예제이다.
User의 정보를 삽입을 하기위한 instertUser 함수에 Completable 사용했는데 이는 데이터를 통지 하지 않고 해당 작업만 하기 위함이다. 즉, 데이터를 insert에 대한 결과는 필요없고 단지 실행만 되면 된다.
@Insert(onConflict = OnConflictStrategy.REPLACE)
fun insertUser(user: User): Completable
데이터를 가져올때 User의 정보를 가져올경우 Single을 사용한다.
@Query("SELECT * FROM Users WHERE userId = :id")
fun getUserById(id: String): Single<User>
@Query("SELECT * FROM Users")
fun getAllUser(): Single<User>
데이터를 삭제할때도 쿼리요청에 대한 결과값이 필요없으므로 Completable을 사용한다.
@Query("SELECT * FROM Users WHERE userId = :id")
fun deleteUserById(id: String): Completable<User>
@Query("SELECT * FROM Users")
fun deleteAllUser(): Completable<User>
사용하는 방법은 아래와 같다. subscribeOn에는 Room Dao쿼리를 수행하기 위한 별도의 작업스케쥴러를 넣어준다.
이후 다시 observeOn에서 MainThread로 변경하여 subscribe에서 결과값을 처리해줘 UI에 적용한다.
class UserActivity : AppCompatActivity() {
private val disposable = CompositeDisposable()
private fun insertUserName() {
disposable.add(insertUserName(userName)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe({ success Event },
{ error -> handle error }))
}
}
CompositeDisposable은 생성된 Observable을 라이클사이클에 맞춰 해지하기 위한 클래스이다. 일반적으로 onDestory()에서dispose()를 하여 메모리 누수를 막는다.
'Android' 카테고리의 다른 글
| [Android] FragmentDialog 동적으로 Size, 위치 조절하기 (0) | 2023.09.07 |
|---|---|
| [Android] WebView 파일 다운로드 기능 (0) | 2023.08.23 |
| [Android] 안드로이드 프로젝트 카카오 로그인 적용해보기 (0) | 2022.06.29 |
| [Android] 카카오 로그인 SDK사용을 위해 설정하기 (0) | 2022.06.29 |
| [Android] Room을 사용하는 방법 (0) | 2022.01.26 |