2014-02-25 4 views
0

일부 데이터를 가져 오기 위해 서버에 많은 HTTP 요청이있는 Android 용 앱을 개발 중입니다. 제 응답에는 JSON 형식의 텍스트와 함께 많은 이미지가 포함되어 있습니다.HttpUrlConnection with HttpResponseCache or Volley with android 더 나은 캐싱 구현을 위해

Google Play, Google 플러스 및 기타 애플리케이션 사용과 같은 적절한 캐싱을 사용하여 애플리케이션을 더 빠르게 작동시키고 싶습니다.

나는 이미 안드로이드 Volley 라이브러리에 대해 알고 있으며 테스트를 위해 몇 가지 샘플을 시험하고 개발했으며 멋진 이미지를 제공하고 예상대로 이미지를 완벽하게 캐싱합니다. 그러나 최근에 인터넷에서 같은 것을 연구하면서, Http 요청 응답을위한 캐시를 설치 한 HttpResponseCache 클래스에 대해 알게되었습니다.

지금 나는 약간 혼란 스럽다. 나는 이미 Volley를 시도했지만 HttpResponseCache을 사용하려하지 않았다.

내 질문은 :

들이 내부적으로 같은 일을하고 있습니까?

그렇지 않은 경우 더 나아질 수 있습니다.

전문가의 조언이나 경험을 통해 많은 시간을 절약 할 수 있습니다.

답변

0

내 경험에 대해 알 수 있습니다. 내 일은 같았 어. 이미지 및 기타 요청을 많이 다운로드해야했습니다. 내 첫 attemp HttpResponseCache 사용하여 HttpUrlConnection 기반으로합니다. 효과가 있었지만 다운로드 속도가 빠르지 않았습니다 (12kb 이미지를 다운로드하는 데 약 1.5-2 초가 소요되었습니다.). 그래서 새로운 빠른 솔루션을 찾아야했습니다.
나는 발리에 대해 알고 있었지만 그 안에있는 몇 가지 기능, 특히 다운로드 우선 순위에 대해 몰랐다. 그리고 주요 목적은 정확히 우선 순위 였으므로 나는 자신의 솔루션을 만들기 시작했습니다. 나는 HttpUrlConnection 대신 아파치 HttpClient를 사용하려고 시도했다. 그리고 그것은 실제로 더 빨랐다. 같은 이미지가 200에서 300 밀리 초로 다운로드되었다.
HttpUrlConnection을 사용하여 더 빠른 속도를 얻을 수 없었지만 전문가가 아니기 때문에 작은 실수가 있었고 HttpUrlConnection이 더 빨리 작동 할 수 있다고 생각합니다. 불행히도이 질문은 아직 닫혀 있습니다.
Volley 소스를 살펴보면 API> = 9 다음에 HttpUrlConnection 클래스를 사용하고 API 레벨 9 이전에는 HttpClient 클래스를 사용합니다. 다운로드 속도를 측정하지 않았으므로 속도가 빠르거나 없습니다.
그래서 결론은 나에게 적어도 3 ~ 4 일 내 솔루션 비용이 들었습니다. 다운로드 한 우선 순위가 있다고 알고 있다면 어쩌면 쓸 필요가 없었을 것입니다 (빠르다면). 질문에 대답하십시오. 예. 볼리도 똑같이하고 있습니다. 특별한 일을 할 필요가 없다면 발리 (Volley)를 사용할 수 있습니다. 자신의 솔루션을 작성하는 것보다 훨씬 빠릅니다.

+0

그러나 문서는 안드로이드 팀이'HttpClient'를 처리하지 않는다고 말하는데, 그 이유는 안드로이드 팀이'HttpUrlConnection'에 초점을 맞추고 있고 자동 캐싱을 제공하기 때문에 매우 복잡한 구현이기 때문입니다. – pyus13

+0

예, 그렇습니다. 내가 Volley가 HttpUrlConnection을 사용하고 정규 작업을 위해 충분할 것이라고 말했지만,이 http://hc.apache.org/httpclient-3.x/을 사용했습니다. – cooperok

+0

캐싱 구현은 어떻습니까? – pyus13