1. flatMap() / flatMapCompletable()
-> 각각 Single, Completable 형태로 반환하며, it 으로 Single, Completable 안의 값 사용가능
2. subscribe()
-> Disposable 형태로 반환
3. blockingGet()
이름 그대로 현재 쓰레드를 blocking 시킨다.
따라서 완전한 동기 코드와 사용해야하며,observeOn(MainThread) 같이 UI 쓰레드를 사용하는 코드와는 절대 같이 사용하면 안됨!
<현재>
fun getInfo(): Info {
1. DB 에서 info 값을 가져온다. -> return Info or nullPointerException
2. 이때 DB에 값이 존재하지 않아 nullPointerException 에러가 발생하면,
onErrorResumeNext() 에서 Repository 의 함수를 통해 info 값을 가져온다. -> return Single<Info>
-> 1번과 2번의 리턴 타입을 통일시켜주기 위해서 1번 동작은 Single.fromCallable() 에서 실행한다.
-> Single<Info>
-> blockingGet() 을 통해 Single<Info> -> Info 으로 바꾸어 리턴한다.
}
액티비티에서는 함수를 호출하여 리턴값( Info )을 그대로 사용한다.
<변경>
fun getInfo(): Single<Info>{
나머지는 위와 동일하지만 blockingGet() 을 호출하지 않고 Single<Info> 타입으로 그대로 반환한다.
}
함수를 사용하는 곳에서 subscribe() 호출하여 Info 값 사용
'Kotlin > 안드로이드 공부' 카테고리의 다른 글
외부 앱에 공유하기 이슈 (w.안드로이드 11 패키지 공개 상태) (0) | 2022.01.03 |
---|---|
Spans - 문자열 중 숫자에만 텍스트 효과 적용하기 (0) | 2021.10.21 |
Rxjava 에러 캐치 (0) | 2021.10.07 |
RecyclerView 안에 EditText (0) | 2021.07.05 |
Native Development Kit (NDK) (0) | 2021.02.26 |