Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android---冗余的下載是多余的

Android---冗余的下載是多余的

編輯:關於Android編程

 

減少下載的最基本的方法是只下載必要的數據,在數據方面,意味著要實現REST API,這些API允許使用參數來指定查詢條件,從而限定返回的數據,如指定最後一次更新的時間。

同樣,當下載圖片時,好的做法是在服務端減少圖片的尺寸,而不是下載全尺寸的圖片。

本地緩存文件

另一項重要的技術是避免下載重復的數據。可以通過緩存來做這件事情。只要合理,就始終要包一些靜態資源,包括那些按需下載的諸如全尺寸的圖片等放到緩存中。按需下載的資源應該被分開存儲,這樣可以定期的刷新這塊緩存,以便管理緩存的大小。

為了確保緩存不會導致應用程序顯示過期的數據,一定要提取最後更新的請求內容的時間,這個時間位於HTTP響應頭中。這就允許你判斷相關的內容被刷新的時機。

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 // Skip update
} else {
// Parse update
}

使用這種方法,還可以有效的緩存動態內容,同時確保不會導致應用程序顯示過期的信息。

你可以在非托管的緩存目錄中緩存非敏感數據:

Context.getExternalCacheDir();

還可以使用托管或安全的應用程序緩存。需要注意的是,這種內部緩存可能在系統運行時內存低於可用存儲時被清空。

Context.getCache();

存儲在緩存位置的文件會在應用程序卸載時被刪除。

使用HttpURLConnection響應緩存

Android4.0把一個響應緩存添加到HttpURLConnection類中。你可以使用下列反射方法,在被支持的設備上啟用HTTP響應緩存:

private voidenableHttpResponseCache() {
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 responsecache is unavailable.);
}
}

上述示例代碼會在Android4.0以上的設備上打開響應緩存而不影響早期的版本。

使用被安裝的緩存,HTTP請求可以直接從本地緩存中獲取服務,而無需打開網絡連接。有條件的緩存響應結果,可以有效的驗證來自服務端的數據的新鮮度,從而消除相關下載的帶寬成本。

從響應緩存中獲取未被緩存的響應會引發新的請求。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved