제이슨의 개발이야기
[안드로이드 코틀린] 코루틴을 이용해서 파이어베이스 동기 처리하기! 본문
안녕하세요 오늘은 코루틴을 이용해서 파이어스토어 접근할때 동기식으로 처리하는 방법에 대해서 공부하고자 합니다 !
일단 동기 비동기 에 대해 잘 모르시는 분들은
가서 동기와 비동기에 대해서 공부 하거나 아니면 구글에 더 좋은 설명이 되어있는 블로그를 통해서 공부하시기 바랍니다 ^^
바로 본론으로 넘어가서
파이어베이스 에서 새로운 도큐먼트를 넣거나 혹은 읽을때는 비동기로 처리가 됩니다 그래서 개발자 입장에서는 이걸 동기식으로 처리받고 싶은대 비동기로 처리해야해서 불편함을 느끼시는 분들이 상당히 많습니다 !
코루틴을 이용하면 정말 간단하게 불편함을 해소할 수 있습니다
CoroutineScope(Dispatchers.IO).launch {
var result : Boolean
runBlocking {
result= fb.sumit()
}
println("${result}")
}
이 코드는 코루틴 스코프를 이용해서 runBlocking 부분을 기다리고 나서 결과값 을 출력하는 부분입니다
코루틴 스코프에서. Dispatchers.IO 는 현재 영역을 input 과 output 을 한다 라고 생각하시면 쉽고
launch 는 메인 스레드로 실행한다 라는 의미입니다
만약 새로운 스래드로 실행하고 싶으면 async를 launch 대신 사용하시면 됩니다!
그리고 나서 runBlocking 부분에 들어가게 되면 중단되고 해당 스레드는 runBlocking 부분이 끝날때 까지 기다리고 나서 끝나면
다시 코드를 실행합니다 !
바로 예제 코드로 넘어가겠습니다 ! (예제코드는 앞서 코드랑 차이가 좀 있습니다!)
suspend fun submit:Boolean{
return try {
db.collection("xxxx").document("yyyy")
.get().await()
true
}catch (e:FirebaseException){
Log.e("error:","erroe:"+e.message.toString())
false
} }
코루틴을 사용하는 함수는 반드시 suspend를 fun 앞에 붙어야 합니다
그리고 나서 db.~~~ 부분 마지막에 .await() 부분을 붙어서
해당 작업이 끝날때까지 잠시 대기 합니다
await 는 작업이 완료되는 것을 기다리고 T 타입의 객체를 리턴합니다.
그리고 나서 결과에 따라 true 와 false 를 반환합니다 !
이렇게 코드 작성을 하면 파이어스토어에 접근 결과에 따라 리턴을 받을 수 있습니다 !
'안드로이드' 카테고리의 다른 글
[안드로이드] LiveData Component 예제코드(feat MVVM,Recycler View) (0) | 2021.04.27 |
---|---|
초보 알고리아(algolia) 검색 엔진 API 사용해보기!! 파이어베이스 검색기능 알고리아로?? with 코틀린 (0) | 2021.04.22 |
[안드로이드 코틀린] 뒤로가기 버튼 막기 AND 뒤로가기버튼 2번입력하면 앱 종료 (Activity , Fragment) (0) | 2021.04.14 |
안드로이드 Material Design이란? 안드로이드 디자인 라이브러리 (0) | 2021.04.13 |
[안드로이드 코틀린] coordinatorlayout 구현하기! [초간단] material 디자인 (0) | 2021.04.12 |