android 之 下载管理器 在任何地方监听进度设计思路

大家想必,做应用市场,或者其他下载,都想在任何地方都监听进度,并且很好的实现。

在这里分享一个比较简单,并且防止内存溢出等情况。我们使用的弱引用来进行绑定View进行更新进度方法。

Map<String, WeakReference<View>> viewListem = new HashMap<String, WeakReference<View>>();// 对进度条进行弱引用

防止内存不够的时候进行回收。

key为下载地址

value 进度条

//添加进度条引用。

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

if (viewListem == null) {
return;
}
WeakReference<View> softView = new WeakReference<View>(view);
viewListem.put(path, softView);
}
//获取进度条。
public synchronized View getViewByPath(String path) {
if (viewListem == null) {
return null;
}
// 从缓存中取软引用的View对象
WeakReference<View> softView = viewListem.get(path);
// 判断是否存在软引用
if (softView == null) {
return null;
}
// 取出View对象,如果由于内存不足View被回收,将取得空
View view= softView.get();
return view;
}


接下来就是,就到进度监听的回调接口去,获取到对应的View进行更新进度吧。搞定。

是不是既简单又实现方便。又防止内存溢出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

重播

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值