[안드로이드] 네트워크
부스트 캠프 사전 작업을 진행하는 과정에서 네이버 검색 API를 사용했습니다. 하지만, Main Thread에서 검색 결과를 받아오는 과정에서 NetworkOnMainThreadException
가 발생했습니다. 그래서 저는 인터넷 연결의 문제라고 생각을 하여 Manifest에 인터넷 권한을 추가 해주었지만, 똑같은 에러를 겪었습니다.
그래서 구글링을 해서 다른 방법을 찾았습니다. 메인 Thread에서 발생하는 에러로 네트워크를 이용해 데이터를 받기 위해서는 별개의 Thread가 필요합니다. 그렇지 않으면 Stream 객체를 통해 데이터를 읽어 오는 과정에서 android.os.NetworkOnMainThreadException 에러가 발생하게 됩니다. 네트워크 처리를 잘 못하게 되면 메인 Thread가 멈출 수 있으므로 강제로 분리해서 구현하도록 만든 것 같다는 생각이 듭니다.
데이터를 읽어 오는 과정에서 InputStreamReader에서 Exception이 발생한 것입니다. 네트워크 특성상 가져오는 데이터의 양이 정해져 있지는 않기 때문에 Thread를 별도로 돌려야 합니다. 그렇지 않으면 데이터를 가져오는 동안 프로그램이 멈춰 있을 수 있습니다.