[Android] Async & Await Function: Coroutines

1

Android

목록 보기
13/16

안녕하세요. 오늘은 코루틴에서 비동기 처리를 위해 사용되는 AsyncAwait 함수에 대해 이야기해볼까 합니다.

Asynclaunch 함수와 더불어 새 코루틴을 시작하여 긴 작업을 비동기 처리하는 방법 중에 하나입니다.

최근 개발하고 있는 앱도 한 번에 10개 이상의 네트워크 콜을 불러와야하는 상황이 생겼습니다. 이를 일반적으로 호출하게 된다면 화장실 한 칸을 여러명이서 나눠쓰듯 상당한 딜레이가 걸리게 됩니다. 그러나 이를 앞서 언급한 Async를 사용한다면 여러 칸의 화장실에서 널널하게 일을 볼 수 있는 것이죠.

코드로 같이 확인해보겠습니다. 다음 코드 스니펫은 비동기 처리 없이 리스트 크기만큼 네트워크 요청을 하는 코드입니다.

총 경과 시간은 다음과 같습니다.

보시다시피 각각의 네트워크콜이 순차적으로 호출되어 대략 16초 정도의 긴 시간을 휴대폰의 빈화면과 보내야 한다는 것이죠.

저희는 여기서 AsyncAwait를 통해 총 호출 시간을 단축해볼 수 있습니다.

다음 스니펫과 같이 네트워크 요청 코드를 Async로 감싸고, Await 정지 함수를 통해 결과값을 얻을 수 있습니다.

다음은 실행 결과입니다.

그저 async 블록으로 감싸주었을 뿐인데 실행 시간이 확연히 줄어들었습니다.

위와 같이 비동기적으로 네트워크 요청을 해준다면 사용자분들께 보다 나은 삶의 질을 선사해드릴 수 있습니다.

0개의 댓글