Android關於OutOfMemoryError的一些思考


from :  http://blog.csdn.net/long33long/article/details/7663563

Android關於OutOfMemoryError的一些思考

分類: Android Bitmap OutOfMemoryError   64人閱讀  評論(0)  收藏  舉報

很多的時候,我們使用Bitmap不會出現多大的問題。但是當機器資源不夠的情況下,很多應用都會報出 OutOfMemoryError,當然報出這樣的異常往往是給Bitmap分配內存時內存不足引起的。即便是很小的一個圖片,也會有出錯,如何解決呢?

我的解決辦法如下:

 

[java]  view plain copy
  1. public static Bitmap createBitmap(int width, int height, Bitmap.Config config) {  
  2.     Bitmap bitmap = null;  
  3.     try {  
  4.         bitmap = Bitmap.createBitmap(width, height, config);  
  5.     } catch (OutOfMemoryError e) {  
  6.         while(bitmap == null) {  
  7.             System.gc();  
  8.             System.runFinalization();  
  9.             bitmap = createBitmap(width, height, config);  
  10.         }  
  11.     }  
  12. }  

經過最近不斷的實驗證明,當內存泄漏很大的時候,上述方法根本無法避免內存溢出。其實避免內存溢出還是要靠平時寫代碼的時候自己去注意。很多時候的溢出主要是因為Bitmap和Drawable資源沒被釋放造成的,尤其是當項目中圖片資源很多的時候,這個問題尤為突出。

解決辦法:當CreateBitmap之后,當這個Bitmap用完之后,那需要recycle這個資源。

還有當需要更換圖片的背景資源的時候需要使用到Drawable,當需要更換那個Drawable時,原來的Drawable需要setCallback(null)來使Activity對原來的資源解除引用,從而使資源得到釋放。Java的內存管理不像C++一般,但是也有它的靈活之處,只要仔細想想,還是可以將內存管理好的。

 

如果你有更好的解決辦法,可以一起討論。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM