1. 程式人生 > >安卓下載文件怎樣更新UI進度

安卓下載文件怎樣更新UI進度

文件下載 observe 頁面 provide 導致 源代碼 tag chan fcm

曾經寫過幾篇關於下載的文章。總的來說是下面幾點:

1、維護一個下載進程的Hashmap,key:使用Md5進行處理後的文件下載地址,value為下載的Task。

以防止下載反復。並將信息保存至數據庫。

2、下載線程Task繼承自Runnable,使用RandomAccessFile來保證能夠斷點下載。

3、下載時使用ContentProvider的Observer進行通知UI或使用Listener監聽器通知,當然也能夠是BroadCast。

反編譯過非常多的apk。並查看下載模塊,使用Listener比較多。該接口定義下載線程開始、更新、錯誤等等狀態。

4、怎樣更新UI?肯定是Handler了。

比方一個下載的列表,我曾經使用Handler通知ListView.adapter.notifyDataChanged。

可是下載進度比較多,導致刷新頁面比較頻繁,基本上僅僅要3個線程在跑,頁面就會卡死了。

能夠採用以下的方式

1)listview的item的進度、下載速度等須要及時的View,使用setTag("xxx")的方式加入tag,以方便更新。

2)須要更新時,如收到了通知,使用listview.findTag("xxx")的方式進行更新。這樣比notifyDataChanged更加節省內存

附件是反編譯某APK的源代碼。

技術分享

技術分享

技術分享

安卓下載文件怎樣更新UI進度