Volley 소개 및 관련 링크

황제낙엽 2018.10.29 05:46 조회 수 : 1899

소개

안드로이드 App을 제작하다보면 이미지 파일 업로드/다운로드, Json 형식의 응답 주고 받기 등

네트워크를 통한 데이터 전송을 빈번하게 사용한다. 이를 위해 가장 많이 쓰이는 방법은 AsyncTask를 생성하여

DoitBackground 메소드 내에서 네트워크 작업을 처리하는 것인데, 이러한 작업들을 좀더 쉽고 빠르게 하기 위해

Google은 2013년 Google I/O에서 volley라는 Http 라이브러리를 공개했다.

 

기능

  • 요청작업큐 + Thread pool을 이용한 동시 요청 지원.
  • 요청별 우선 순위 : 목록조회와 이미지 다운로드를 할때 목록조회가 우선순위가 높게 설정. 다음 페이지의 목록조회를 요청하면 이전페이지의 이미지로딩이 끝나지 않아도 기다리지 않고 수행.
  • 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형식을 처리하도록 확장 가능

 

링크

 

기타 라이브러리

[OkHttp3]

OkHttp는 안드로이드에서 http/2 응답을 빠르고 손쉽게 받게 해주는 클라이언트를 제공해주는 라이브러리이다.

square에서 만든 라이브러리인데, OkIo라는 라이브러리에 의존성을 갖고 있다.

 

[REST API]

REST API는 HTTP를 더 강력하게 사용하기 위한 아키텍처이다.

Representational State Tranfer의 약자이다.

REST API는 다음과 같은 3가지로 구성된다.

    1. 자원(Resource) - URI

    2. 행위(Verb) - HTTP METHOD

    3. 표현(Representations) 

 

[Retrofit2]

레트로핏은 type-safe한 REST API를 손쉽고 빠르게 사용하기 위한 어댑터 라이브러리이다.

type-safe는 컴파일러가 해당 자료형의 타입을 결정할 수 있어서 만약 String에 숫자를 대입하려 하면 에러를 내주고 이런 맥락인데, 

Retrofit에선 HTTP 요청을 할 때 URL을 만드는 것(manipulation)을 REST API의 형식에 맞게 알맞게 검사해주는 것을 의미하는 듯 하다.

Retrofit2를 사용할 때 알아야 할 것이 있다고 한다.

    1. Retrofit2은 OkHttp에 의존성을 갖는다. 그 의미는 OkIo에도 의존성을 갖는다는 뜻이다.

    2. Gson은 Retrofit의 Bundle이 아니다. Retrofit은 오직 HTTP 몸체를 OkHttp의 응답 몸체로 역직렬화 해줄 뿐이다.

    3. Gson말고도 JSON과 XML을 변환시켜줄 여러개의 Converter가 존재한다.

 

[Gson]

Gson은 JSON 컨버터이다. Retrofit 객체를 만들 때 

.addConverterFactory(GsonConverterFactory.create())

와 같은 식으로 Converter를 달아준다.

 

출처 :: https://blog.naver.com/mym0404/221377506033

 

 

 

 

 

번호 제목 글쓴이 날짜 조회 수
128 PC를 위한 최고의 안드로이드 에뮬레이터 황제낙엽 2023.01.18 3136
127 [Jetpack Compose UI / 상추님] GDG Jetpack compose 코드랩 수료 후기 (feat. 굿즈) 황제낙엽 2022.12.24 2372
126 [Jetpack Compose UI / kyj1991719] compose - Compose 이해 황제낙엽 2022.12.24 4025
125 [Jetpack Compose UI / 꾸준] Compose 가 뭔데...? 황제낙엽 2022.12.24 4036
124 [Jetpack Compose UI / IIVIKI] Compose 학습과 분석 황제낙엽 2022.12.24 4050
123 [Jetpack Compose UI] 스터디 시작하기 황제낙엽 2022.12.24 4001
122 [개발하는 정대리] 취준생을 위한 안드로이드 앱만들기 - 바텀네비게이션 뷰, 네비게이션 AAC file 황제낙엽 2022.12.22 3882
121 [개발하는 정대리] 취준생을 위한 안드로이드 앱만들기 - 뷰바인딩 file 황제낙엽 2022.12.22 3852
120 [개발하는 정대리] 취준생을 위한 안드로이드 앱만들기 - 라이브데이터 뷰모델 file 황제낙엽 2022.12.21 3827
119 [대왕놀] ImageButton in Compose (IconButton) 황제낙엽 2022.12.20 4107
118 [대왕놀] compose instrumentation test tutorial 황제낙엽 2022.12.20 3986
117 [대왕놀] Switch in Compose 황제낙엽 2022.12.20 4106
116 [대왕놀] EditText in Compose (TextField) 황제낙엽 2022.12.20 4022
115 [대왕놀] margin in Compose 황제낙엽 2022.12.20 4105
114 [대왕놀] modifier in compose 황제낙엽 2022.12.20 4181
113 [대왕놀] Button in Compose file 황제낙엽 2022.12.20 4225
112 [대왕놀] TextView in Compose (Text) 황제낙엽 2022.12.20 4083
111 [대왕놀] ImageView in Compose (Image) 황제낙엽 2022.12.20 4019
110 [대왕놀] LinearLayout in Compose (Row, Column) 황제낙엽 2022.12.20 4114
109 [대왕놀] Introduction to Jetpack compose 황제낙엽 2022.12.20 3965