안드로이드/개발관련(Kotlin)

GEOcoder 사용 시 java.io.IOException: grpc failed오류 해결

닉네임못짓는사람 2023. 2. 27. 20:06
반응형

안드로이드에서 Geocoder를 사용해서 위도, 경도를 주소(서울특별시 xxxx~~)로 바꾸는 과정에서

java.io.IOException: grpc failed에러가 발생해서 해결법을 좀 찾아봤다.

 

보통 에뮬레이터 사용 시 에러가 발생한다는 글을 많이 발견했는데,

원인은 네트워크 연결이 불안정해서 이런 현상이 발생할 수도 있다는 것이다.

 

해결법은 간단하게 에뮬레이터에서 인터넷을 Wi-fi가 아닌 LTE(데이터)로 바꿔주었더니 문제가 해결되었다.

또한 try~catch문을 사용해서 에러 발생 시 해당 부분을 재시도 하는 걸로 해결해 볼 수도 있다고 한다.

 

추가) Geocoder사용 시에 변환하려는 좌표값(위도, 경도)가 소수점 3자리를 넘어가면

이런 현상이 가끔 발생한다는 글도 발견했다.

위의 방법으로 해결이 안되는 분들은 좌표를 소수점 3자리 이하로 잘라서 해보시길 바란다.

 

해결) 좀 더 잘 찾아보니 정확한 해결법을 찾아냈다.

GEOCoder를 사용한 좌표 -> 주소 변경은 시간을 많이 사용하는 작업이기 때문에

안드로이드에선 이를 Main쓰레드에서 동기화작업을 수행할 순 없다. (ANR이 발생하기 때문)

따라서 이 작업은 비동기 작업으로 수행해주어야 한다.

 

필자는 Coroutines를 사용하여 address LiveData를 업데이트 하여 이 값을 뷰에 업데이트 하는걸 추천한다.

반응형