[Android Advanced Training - 05] 데 이 터 를 전송 할 때 전기의 낭 비 를 피하 기 [Lesson 3 - 중복 다운 로드 를 피하 기 위해 캐 시 사용]

3243 단어 Advanced
Redundant Downloads are Redundant [중복 다운 로드 는 불필요 합 니 다]
  • 다운 로드 를 줄 이 는 가장 기본 적 인 방법 은 당신 이 필요 로 하 는 것 만 다운로드 하 는 것 이다.데이터 의 측면 에서 볼 때 우 리 는 지난번 업데이트 시간 과 같은 매개 변 수 를 전달 하여 일부 데 이 터 를 조회 할 수 있다.
  • 마찬가지 로 그림 을 다운로드 할 때 server 쪽 은 전체 크기 의 그림 을 다운로드 하 는 것 이 아니 라 그림 의 크기 를 줄 이 는 것 이 좋 습 니 다.

  • Cache Files Locally [로 컬 로 캐 시 파일]
  • 중복 되 는 데 이 터 를 다운로드 하지 않 는 것 이 중요 하 다.캐 시 메커니즘 을 사용 하여 이 문 제 를 처리 할 수 있다.전체 그림 과 같은 static 자원 을 캐 시 합 니 다.이 캐 시 된 자원 들 은 따로 저장 해 야 한다.
  • app 이 캐 시 로 인해 오래된 데 이 터 를 표시 하지 않도록 캐 시 에서 최신 데 이 터 를 가 져 오 십시오. 데이터 가 만 료 되면 새로 고침 을 알려 줍 니 다.

  • long currentTime = System.currentTimeMillis());
    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
    long expires = conn.getHeaderFieldDate("Expires", currentTime);
    long lastModified = conn.getHeaderFieldDate("Last-Modified", currentTime);
    setDataExpirationDate(expires);
    if (lastModified < lastUpdateTime) {
    // Skip update
    } else {
    // Parse update
    }
  • 이 방법 을 사용 하면 캐 시 에 최신 데이터 가 있 음 을 효과적으로 보장 할 수 있 습 니 다.
  • 외부 캐 시 디 렉 터 리 를 아래 방법 으로 가 져 올 수 있 습 니 다.
  • Context.getExternalCacheDir();
  • 다음은 내부 캐 시 를 가 져 오 는 방법 입 니 다. 메모리 에 저 장 된 데 이 터 는 내부 공간 이 부족 해서 삭 제 될 수 있 습 니 다.
  • Context.getCache();
  • 어디 에 저 장 된 파일 이 든 앱 이 마 운 트 해제 할 때 삭 제 됩 니 다.
  • HttpURLConnection Response Cache 사용 [HttpURLConnection Response 캐 시 사용]
  • Android 4.0 에서 HttpURLConnection 에 response cache 를 추 가 했 습 니 다. 우 리 는 반사 체 제 를 사용 하여 HTTP response cache 를 열 수 있 습 니 다. 아래 의 예 를 보 세 요.
  • private void enableHttpResponseCache() {
    try {
    long httpCacheSize = 10 * 1024 * 1024; // 10 MiB
    File httpCacheDir = new File(getCacheDir(), "http");
    Class.forName("android.net.http.HttpResponseCache")
    .getMethod("install", File.class, long.class)
    .invoke(null, httpCacheDir, httpCacheSize);
    } catch (Exception httpResponseCacheNotAvailable) {
    Log.d(TAG, "HTTP response cache is unavailable.");
    }
    }
  • 위의 sample code 는 Android 4.0 이상 의 장치 에서 response cache 를 켜 는 동시에 이전 프로그램 에 영향 을 주지 않 습 니 다.
  • cache 가 열 린 후에 모든 cache 의 HTTP 요청 은 로 컬 저장 소 에서 직접 응답 할 수 있 으 며 새로운 네트워크 연결 을 열 필요 가 없습니다.
  • cache 에 의 해 일어 난 response 는 server 에 의 해 기한 이 지나 지 않 았 음 을 확보 하여 대역 폭 을 줄 일 수 있 습 니 다.cached 되 지 않 은 response 는 다음 요청 이 편리 해서 response cache 에 저 장 됩 니 다.

  • 후기: Cache 체 제 는 많은 실제 프로젝트 에서 사용 되 고 실제 작업 이 복잡 하 며 기회 가 있 으 면 Cache 의 인 스 턴 스 를 공유 하고 싶 습 니 다.
    감사합니다.
    전재 출처 를 밝 혀 주세요. http://developer.android.com/training/efficient-downloads/redundant_redundant.html 감사합니다.

    좋은 웹페이지 즐겨찾기