Android/Application2014. 9. 3. 10:55


간단한 Android Network Application을 작성하기 위한 기본 지식.


 Android application의 main(UI) thread에서의 network 관련 동작의 실행은 warning이 발생하게 된다.

Network request의 경우 예상치 못한 delay가 발생하여 실행이 지연될 수 있기때문에 

main thread의 동작을 방해하기 때문이다.

하여 network연동을 할때는 별도의 thread에서 처리를 하도록 한다.


이때 사용할 수 있는 class는 Thread(+runable)와 Handler(thread에서 발생한 결과를 main thread로 전달 하기 위한) 또는 AsyncTask 가 있다.

AsyncTask의 경우 별도의 Handler가 필요없이, 필요한 함수를 override하여 그곳에서 UI thread에서 처리가 필요한 내용들을 구현하는 것으로 간결히 처리 할 수 있다.


http 처리를 위해서 android에서는 HttpURLConnection과 Apach의 HttpClient를 지원하며

공식적으로는 GB이상에서는 HttpURLConnection(+URL)를 권장한다.


우선 network이 사용가능한 상태인지 확인을 위해 아래의 method를 사용한다.

ConnectivityManager.getActiveNetworkInfo()


 서버를 통해 전달받은 결과는 InputStream을 통해서 읽어들일 수 있고

InputStream을 통해 전달된 byte array를 String으로 변환하기 위하여 InputStreamReader, BufferedInputStream등이 사용된다.

inputstream을 통해서 data를 읽을때는 전송될 정확한 size를 알 수 없기 때문에 적당한 사이즈만큼만 read()를 하고 -1이 return되면 종료한다.


참고 : http://developer.android.com/training/basics/network-ops/connecting.html




Posted by ekwang