編輯:關於Android編程
DiskLruCache是谷歌推薦的用來實現硬盤緩存的類,本案例將對DiskLruCache的基本用法做一個總結,包括:創建緩存、查找使用緩存、移除緩存等等。
DiskLruCache使用open方法創建一個實例,如下所示:對應的四個參數分別為:緩存目錄、應用版本號、單個key對應的數據的個數(一般設為1)、緩存的總大小,其中key是圖片的url經過MD5轉碼獲得的,防止url帶有特殊符號影響緩存的正常使用。
try {
File cacheDir = getDiskCacheDir(this, "bitmap");
if (!cacheDir.exists()) {
cacheDir.mkdirs();
}
mDiskLruCache = DiskLruCache.open(cacheDir, getAppVersion(this), 1, 10 * 1024 * 1024);
} catch (Exception e) {
e.printStackTrace();
}
通過DiskLruCache.Editor可以獲取到緩存對象的編輯對象editor,類似於SharedPreference的editor。DiskLruCache不允許同時編輯一個緩存對象,如果這個緩存對象正在被編輯,則editor==null。
new Thread(new Runnable() {
@Override
public void run() {
try {
String key = hashKeyForDisk(imageUrl);
DiskLruCache.Editor editor = null;
editor = mDiskLruCache.edit(key);
if (editor != null) {
OutputStream outputStream = editor.newOutputStream(0);
if (downloadUrlToStream(imageUrl, outputStream)) {
editor.commit();
} else {
editor.abort();
}
}
//不該頻繁的flush,防止journal日志文件的頻繁修改
mDiskLruCache.flush();
handler.post(new Runnable() {
@Override
public void run() {
textView.setText("saveCache done,the bitmap is ready");
}
});
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();
DiskLruCache.get(String key)方法可以獲取到一個Snapshot實例,通過DiskLruCache.Snapshot實例獲取緩存文件的輸入流,即可在imageView上顯示該圖片。
//讀取緩存
try {
DiskLruCache.Snapshot snapshot = mDiskLruCache.get(hashKeyForDisk(imageUrl));
if (snapshot != null) {
InputStream is = snapshot.getInputStream(0);
Bitmap bitmap = BitmapFactory.decodeStream(is);
imageView.setImageBitmap(bitmap);
} else {
imageView.setImageBitmap(null);
}
} catch (IOException e) {
e.printStackTrace();
}
另外,DiskLruCache還提供了清空緩存delete()、獲取緩存目錄下的緩存大小size()等方法操作緩存。
簽名工具的使用Android源碼編譯出來的signapk.jar既可給apk簽名,也可給rom簽名的。使用格式:java –jar signapk.jar [-w] pu
數據格式為 {sid:737, tts:http://news.iciba.com/admin/tts/2013-12-11.mp3, co
需求:近段時間公司有要求寫一個類似於微信發送圖片時,用來選擇照片的一個圖片浏覽器,本來想在網上找一個直接拿來用,找尋無果,只能自己寫了。相信有很多網頁也有這
Android Vitamio 庫Vitamio是一個android和ios上基於FFmpeg的開源項目。Vitamio為我們提供了一個清潔、簡單、全面、真