Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> Android 開發中的網絡下載策略 與 文件緩存策略

Android 開發中的網絡下載策略 與 文件緩存策略

編輯:Android開發實例

一般的緩存策略是:
一級內存緩存、二級文件緩存(數據庫也算作文件緩存)、三級網絡數據

一、網絡下載的緩存策略
關於網絡下載文件(圖片、音頻、視頻)的基本策略:
1.不要直接下載到目標文件,應使用temp文件作中轉,以確保文件的正確性與完整性,流程如下:
a)以網絡目標文件名 A 生成唯一的本地目標文件名 B
b)以本地目標文件名 B 生成唯一的本地臨時文件名 T
c)下載文件到 T 中
d)下載完畢,校驗文件 T 的正確性與完整性
e)若不正確或不完整則 delete 文件 T,並返回 false
f)校驗完畢後,將文件 T 重命名 或 復制到 B 文件
g)最後的清理現場,刪除臨時文件 T,成功後,返回 true
2.盡力提供文件正確性與完整性的校驗:
a)正確性:比如 MD5/Hash Code 比對、文件格式的比對。
b)完整性:比如 文件大小是否一致、圖片的數據是否正確(圖片文件頭中提供了相關信息)
3.考慮對於下載到本地的文件是否需要再做二次加工,可以思考以下情況:
a)比如網絡源始圖片的大小為800*600,而我們需要作為縮略圖的大小為160*145,所以考慮對下載後的文件進行裁剪,再保存,對於源始文件則直接刪除。

二、文件緩存策略:
1.需要唯一的緩存文件的對應I/O key,一般可以使用 hashcode。
2.若是同一個文件,以不同的時間,可以考慮,先清本地緩存,再下載新的緩存到本地。
3.同一文件也可以加上時間戳後,再生成唯一hashcode。
4.生成文件緩時,也許需要作以下全面的考慮:

a)sdcard是否已經沒有空間(這個需求是存在的,但幾乎沒有人會考慮到,一旦發生,必crash)。
b)緩存的清理策略。每日、每周定時清理?到達一個閥值後,自動清理?(若無清理策略,把垃圾數據一直當個寶一相存著,是很SB的)。
c)緩存真正需要的數據。不要覺外存是無限的,所以就可以什麼都存,要知道,多則繁,繁則亂。曾經有一同事,每天存幾百MB的用戶數據(所有用戶的性別、age、聯系方式等等),而PM需要的只是一個每日數戶的活躍數據報表,於是最後改為緩存每天的用戶分析報表數據即可(才10幾KB)。
d)給緩存文件加密。最簡單就是去掉文件的擴展名,這也算加密,當然,你可以把服務端文件加密,然後在內存中解密。這就看項目的需求而定,我的經驗也不足,一般就是改改擴展名之類的。

三、內存緩存策略
內存緩存策略是為了應對更加高效的緩存,對於不是頻煩更新的文件數據,就可以緩存在內存中,但是有以下注意事項:

a)內存的I/O,弱引用。弱引用可以讓JVM更加合理、自主的回收。
b)內存緩存的 key 也必須唯一,可以參考文件緩存 key 策略。
c)提供一個內存緩存刷新的接口。雖然內存緩存本身的生命周期就較短,但它必竟是最上層的用戶數據,所以設計時提供一個UI刷新接口,是可以考慮的。

from:http://lichsword.net/blog/archives/542

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