java.io.IOException: grpc failed

4012 단어 issueissue

개요

GeoCoder를 사용하여 주소를 가져오는 코드가 있었는데
갑자기 에러가 발생하였다.
java.io.IOException: grpc failed

잘 되던 GeoCoder에서 갑자기 에러가 발생하니 난감했지만
검색을 해보니 꽤나 간헐적으로 발생하는 에러인 거 같다.
해당 에러에 대한 글이 꽤 많았다.
역시 갓오버플로우

결론은 주소를 얻어오는 과정이 생각보다 시간이 걸리는 작업이라
Main 스레드가 아닌 다른 스레드에서 처리를 해야한다는 것이다.
결국엔 Thread를 쓰던 Coroutine을 쓰던 비동기로 처리를 해야한다.

해결

필자는 Thread를 사용하여 해결하였다.

Thread {
	val address = Geocoder(this@MainActivity).getFromLocation(it.latitude, it.longitude, 1)[0].getAddressLine(0).toString()
	val addressList = address.split(" ")

	for(idx in 1 until addressList.size) {
		builder.append("${addressList[idx]} ")
	}
	viewModel.location.postValue(builder.toString())
}.start()

재발..

비동기 처리를 추가하고 정상작동하는 것까지 확인했는데
일주일 뒤인 오늘 다시 실행해보니 또 에러가 났다.
제발

다시 알아보니 에뮬레이터는 AVD 매니저에서 Wipe Data를 해주는 것도 방법이라고 한다.

그리고 스택오버플로우에서 본 댓글 중에
에뮬레이터에선 잘 안될 수 있으니 가급적 실제 단말기에서 테스트해보라는 댓글이
꽤나 많았다.

확실히 에뮬레이터에선 간혹 터지던 이 에러가
실제 단말기에선 한번도 터지지 않았다.
에뮬레이터가 편한데 쩝

이번 에러 덕분에 에뮬레이터론 테스트에 한계가 있다는 것을 알게되었다 ..

개인적으로 공부했던 것을 바탕으로 작성하다보니
잘못된 정보가 있을수도 있습니다.
인지하게 되면 추후 수정하겠습니다.
피드백은 언제나 환영합니다.
읽어주셔서 감사합니다.

좋은 웹페이지 즐겨찾기