sitelink1 | |
---|---|
sitelink2 | |
sitelink3 |
소개
안드로이드 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형식을 처리하도록 확장 가능
링크
- Naver의 정상혁 - Google Volley에 대한 자세한 설명 : https://gist.github.com/benelog/5981448
- Google I/O 발표자료 : https://ringsterz.files.wordpress.com/2014/12/110-volley-easyfast-networking-for-android.pdf
- Google 개발자 튜토리얼 : https://developer.android.com/training/volley/
- Volley 간단 사용법 : http://hobakc.blogspot.com/2014/02/volley.html
- Volley에 대한 허접한 기본 이해 : https://blog.naver.com/contrazant/221250453422
- Volley를 이용해 Network Data 전송하기 : https://ringsterz.wordpress.com/2014/12/03/...
기타 라이브러리
[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