安卓下載文件怎樣更新UI進度
阿新 • • 發佈:2017-07-05
文件下載 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進度