ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Network] Android Volley 라이브러리
    Programming/Android 2013.11.21 13:37

    오늘은 Google I/O 2013 에서 발표되었던 Volley 라는 Network&ImageLoading Framework 에 대해서 블로깅 해보려고 합니다.

    이번 프로젝트에서 저는 Network 통신을 위해서 사용한 라이브러리 인데, 매우 만족하고 이에 대해 블로깅하고 정보를 공유하고자 합니다.


    Volley의 주요 기능은 다음과 같습니다.



      ● 요청작업큐(RequestQueue) + Thread pool을 이용한 동시 요청 지원.

      ● 요청별 우선 순위 : 목록조회와 이미지 다운로드를 할때 목록조회가 우선순위가 높게 설정. 다음 페이지의 목록조회를       요청하면 이전페이지의 이미지로딩이 끝나지 않아도 기다리지 않고 수행. 

          (A요청이 B요청보다 먼저 응답을 받아야 할 경 우와 같이)

      ● Transparent cache : 요청하는 쪽에서 Cache 적용여부를 의식하지 않아도 됨

      ● 이미지 로딩툴, NetworkImageVIew라는 View 제공

      ● 요청 취소 : 특정 요청, 해당 Context의 요청 모두 취소할 수 있고, 취소할 규칙도 지정 가능

      ● 진저브레드 이전의 HttpURLConnection의 버그 문제 해결 : 

          2013년 5월 The platform에 기고한 Android의 HTTP 클라이언트 라이브러리 기사에서 다룬 여러 오픈소스가 그랬던  

          것처럼 진저브레드 이상에서만 java.net.HttpURLConnection을 쓰는 로직이 들어가 있습니다.

      ● retry, backoff policy 지원, 확장 기능

      ● SPDY 지원 : 발표 당시에는 Volley의 tranport stack으로 OkHttp( http://square.github.io/okhttp/ ) 를 넣는 작업이 

          누군가가 진행하고 있다고 했는데, 기사를 작성한 이후에 따끈따끈하게 공개 되었습니다.

      ● JSON, XML, Image, protobuffer 등 다양한 Response형식을 처리하도록 확장 가능



    위와 같이 아주 유용하고 필요한 기능들이 기본적으로 내장되어있으며, 오픈소스라서 사용자에 맞게 커스터마이징도 가능한 점도 굳굳!



    그리고 StringRequest, JSONObjectRequest, JSONArrayRequest 등 형식에 맞는 Request도 별도의 작업 없이 가능합니다.


    또한 많은 분들이 ImageLoading 즉 웹으로부터 이미지를 다운로드 받아서 보여주기 위한 라이브러리로도 많이사용하시는데요!

    그 목적으로 사용하시기에도 아주 좋은 기능들이 가득 포함되어있습니다.

    이미지 로딩 부분에서의 장단점을 다루기에는 너무 많은 양이기 때문에 좋은 블로그 글을 소개시켜드리겠습니다.

    [Android의 이미지 로딩 라이브러리 -> http://helloworld.naver.com/helloworld/429368 ]



    아무튼! 저는 Network 통신을 위한 기본적인 방법들을 소개해드릴겁니다.



    Volley 사용하기


    Volley를 기본적으로 다운로드하고 프로젝트에 import 했다고 가정한 상태에서 예제 소스를 통해서 설명드리겠습니다.



    위와 같은 요청이 가장 기본적인 Volley의 NetworkRequest 방법입니다.

    http://rootnix.in 에 Get Request  를 보내고 Response 를 받아오는 거죠.


      StringRequest(int method, String url, Listener<String> listener, ErrorListener errorListener)


    위와 같이 String 만으로 받는것뿐 아니라, 요청에 파라미터를 넣고 응답받는 형식도 다른 형식으로 받을 수 도 있습니다.


    위와 같이 JsonObject를 파라미터로 주고 Response 또한 JsonObject 로 받을 수 있어서 Restful Api 를 사용하기에 아주 좋습니다.


     JsonObjectRequest(int method, String url, JSONObject jsonRequest, Response.Listener<JSONObject> listener, Response.ErrorListener errorListener)




    Volley를 얼마나 잘 활용하느냐에 따라서 네트워크 통신 모듈을 작성하시는데 있어서 편리함과 유용함을 한번에 느끼실 수 있으실 겁니다 :D


    더 자세한 활용법은 연락주시면 더 도와드리도록 하겠습니다.



    Volley 다운로드 - git

     git clone https://android.googlesource.com/platform/frameworks/volley

    https://android.googlesource.com/platform/frameworks/volley )

    댓글 0

Designed by Tistory.

티스토리 툴바