歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Android OOM(Out of Memory) 一點認識

今年做公司項目的時候,自己做與File有關的那部分。

需求如下:

如果是圖片就完全顯示出來,如果不是圖片就讓顯示默認的圖標。還有兩種不同的顯示方式,一種是tile view(瓦片樣式,就是一行可以有好幾個文件,類似GridView,但是有的Item可以跨行),另一種就是list View.

眾所周知,每一個Android APP 分配16M的內存,圖片的內存被分配給8M,這些內存真是少的有點可憐,內存的及時回收顯得極為重要,內存的重復利用同樣如此。

我自己寫了一個ImageDownloader類來異步下載圖片,並且把圖片和URL對應保存到內存中,當出現相同的url時,不用再次從網絡下載,直接從內存裡面取,節省了時間,也節省了網絡資源。

剛開始的時候只要屏幕上有幾張圖片,不同視圖(tile view 和 list view)之際切換就會有出現如下error:“ bitmap size exceeds vm budget”,相信大多數人都遇到過這樣的問題。

一直不知道怎麼解決?

後來才發現了問題所在:我的兩個Adapter(TileViewAdapter 和ListViewAdapter)中各自保存了一個ImageDownloader,這樣就會使用的內存加倍,所有我的解決方法就是把ImageDownloader變量位置向上提一級,放到他們共同的Activity中,問題就解決了。

如果發現任何問題,請您指正。

Copyright © Linux教程網 All Rights Reserved