마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

어떤 메소드가 동기식인지 비동기식인지 어떻게 알수 있나요?

0 추천
메소드 이름에 async 접두어 또는 접미어가 붙어있으면 비동기식 메소드라는걸

쉽게 알수 있습니다. 그리고, 어떤 경우에는 안드로이드 레퍼런스 사이트에서

해당 메소드 설명을 보면 이 메소드는 동기식이라거나 아니면 비동기식으로

작동하니 주의하라는 코멘트가 있는 경우도 있습니다.

하지만 모든 메소드에 대해서 그런 친절한 코멘트가 달려 있는건 아닌거 같구요.

그렇다면 안드로이드 API에 A라는 메소드가 있는데 이 메소드가 동기식으로

작동하는 메소드인지 비동기식으로 작동하는 메소드인지는 어떻게 알수 있는지

궁금합니다.
김삼색 (500 포인트) 님이 2022년 5월 24일 질문

1개의 답변

0 추천

동일한 쓰레드에서 실행되는 경우는 동기식, 다른 쓰레드에서 실행되는 경우는 비동기로 볼 수 있는데, 안드로이드에서는 많은 경우가 메인쓰레드에서 백그라운드 쓰레드로 전환하는경우입니다. 물론 백그라운드 쓰레드를 여러개 생성해 쓰레드간에 왔다 갔다 할 수도 있지만, 메인쓰레드에서 백그라운드 쓰레드로 전환하는 경우를 흔히 접하게 됩니다. 이 때  동기식 처리방식은 처리가 끝날 때까지 메인 쓰레드를 사용하면서 UI를 블록시키게 되지만 비동기 방식을 그렇지 않습니다. 아래 함수는 현재 쓰레드가 메인쓰레드인지 아닌지 체크하는 함수입니다.

fun isMainThread(): Boolean {
   return Looper.myLooper() == Looper.getMainLooper()
}

 

아래처럼 현재 쓰레드 이름을 체크할 수도 있습니다. 메인쓰레드에서 실행 중이라면 MainThread라는 이름을 볼 수 있습니다.

Thread.currentThread().getName()

 

안드로이드에서 어떤 방법들로 비동기를 구현하는지 아래 블로그에 정리가 되어 있네요.

https://medium.com/android-news/8-ways-to-do-asynchronous-processing-in-android-and-counting-f634dc6fae4e

spark (227,470 포인트) 님이 2022년 5월 24일 답변
spark님이 2022년 5월 25일 수정
...