ListView的幾種常見的優化方法(三)

優化三:網絡

上面的兩個例子中ListView都是顯示的本地的List集合中的內容,List的長度也只有100個,咱們能夠絕不費力一次性加載完這100個數據;可是實際應用中,咱們每每會須要使用Listview來顯示網絡上的內容,好比說咱們拿使用ListView顯示新聞爲例:性能

其一:假如網絡狀況很好,咱們使用的手機也許可以一會兒加載完全部新聞數據,而後顯示在ListView中,用戶可能感受還好,假如說在網絡不太順暢的狀況下,用戶加載完全部網絡的數據,可能這個list是1000條新聞,那麼用戶可能須要面對一個空白的Activity好幾分鐘,這個顯然是不合適的。優化

其二:咱們知道Android虛擬機給每一個應用分配的運行時內存是必定的,通常性能不太好的機器只有16M,好一點的可能也就是64M的樣子,假如說咱們如今要瀏覽的新聞總數爲一萬條,即使是網絡很好的狀況下,咱們能夠很快的加載完畢,可是多數狀況下也會出現內存溢出從而致使應用崩潰的狀況。code

那麼爲了解決上面的兩個問題,咱們須要進行分批加載,好比說1000條新聞的List集合,咱們一次加載20條,等到用戶翻頁到底部的時候,咱們再添加下面的20條到List中,再使用Adapter刷新ListView,這樣用戶一次只須要等待20條數據的傳輸時間,不須要一次等待好幾分鐘把數據都加載完再在ListView上顯示。其次這樣也能夠緩解不少條新聞一次加載進行產生OOM應用崩潰的狀況。內存

實際上,分批加載也不能徹底解決問題,由於雖然咱們在分批中一次只增長20條數據到List集合中,而後再刷新到ListView中去,假若有10萬條數據,若是咱們順利讀到最後這個List集合中仍是會累積海量條數的數據,仍是可能會形成OOM的狀況,這時候咱們就須要用到分頁,好比說咱們將這10萬條數據分爲1000頁,每一頁100條數據,每一頁加載時都覆蓋掉上一頁中List集合中的內容,而後每一頁內再使用分批加載,這樣用戶的體驗就會相對好一些。get

相關文章
相關標籤/搜索