android 之 下載管理器 在任何地方監聽進度設計思路

大傢想必,做應用市場,或者其他下載,都想在任何地方都監聽進度,並且很好的實現。

在這裡分享一個比較簡單,並且防止內存溢出等情況。我們使用的弱引用來進行綁定View進行更新進度方法。

Map<String, WeakReference> viewListem = new HashMap<String, WeakReference>();// 對進度條進行弱引用

防止內存不夠的時候進行回收。

key為下載地址

value 進度條

//添加進度條引用。

public synchronized void addViewToCache(String path, View view) {

if (viewListem == null) {
return;
}
WeakReference softView = new WeakReference(view);
viewListem.put(path, softView);
}
//獲取進度條。
public synchronized View getViewByPath(String path) {
if (viewListem == null) {
return null;
}
// 從緩存中取軟引用的View對象
WeakReference softView = viewListem.get(path);
// 判斷是否存在軟引用
if (softView == null) {
return null;
}
// 取出View對象,如果由於內存不足View被回收,將取得空
View view= softView.get();
return view;
}

接下來就是,就到進度監聽的回調接口去,獲取到對應的View進行更新進度吧。搞定。

是不是既簡單又實現方便。又防止內存溢出。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。