반응형
안드로이드 개발 시, Kotlin 쓰는 경우 코루틴은 상당히 쓸만한데,
A,B,C 함수가 끝나면 D를 실행하라
A ->B ->C ->D 순차적으로 실행하라
통신 완료 후 동작을 실행하라
등등의 코드가 필요할 때 아주 쓸만하다
(rxjava를 써봤으면 그와 유사한 부분이 꽤 있는듯)
하지만 firebase db, firestore db는 실시간 갱신 처리가 되도록 만들어졌기 때문인지 listener의 return이 오기 전에 코루틴 함수가 pass되는 현상이 있어서 체크 해봤는데
결론적으로는 gradle에 corountine android 하단에, kotlinx-coroutines-play-services 를 추가해주고
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.3'
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-play-services:1.3.3'
CoroutineScope(Dispatchers.IO).launch {
runBlocking {
funXXX()
}
funAfterXXX()
}
suspend fun funXXX():Boolean{
return try {
db.collection("xxxx").document("yyyy")
.get().await()
true
}catch (e:FirebaseException){
Log.e("error:","erroe:"+e.message.toString())
false
}
}
extension funciton .await() 을 통해서 동기처리가 완료 된다
반응형