2012-01-11 466 views
5

我有一個顯示小位圖的視圖,這在我的應用程序的許多地方(特別是列表視圖)中使用。每次使用BitmapFactory.decodeResource(resource, id)創建該視圖的實例時,我正在加載該位圖。我意識到我可以通過將一次位圖加載到一個靜態變量中(以便視圖的所有實例都可以重用它)並且確實可以爲每個視圖實例節省大約2-4毫秒的時間,從而提高性能。我的問題是,以這種方式使用靜態變量會導致Android中的任何類型的內存泄漏?我很擔心,因爲我還沒有發現任何其他使用靜態變量來存儲位圖的例子。在靜態變量中存儲位圖資源

後續問題:How to keep a Bitmap in memory

+2

報價羅曼蓋伊「當被拉伸連接到一個視圖,該視圖在上面的代碼片段中,這意味着drawable有一個對TextView的引用,它本身有一個對活動(Context)的引用,它依次引用幾乎所有的東西(取決於你的代碼。)「...所以保持靜態會導致內存泄漏。 – Nitin 2012-01-11 05:46:59

+1

Thanks @ 0cool,我看過那篇文章,但我不確定'android.graphics.Bitmap'(不是'android.graphics.drawable.BitmapDrawable')也是'Drawable'。那確實是這樣嗎? – 2012-01-11 16:37:17

+0

嗨,@AbdullahJibaly在使用位圖之前,我們是否需要導入或擴展某些東西?正如我在做'位圖設備;'和我的IDE給一個錯誤,_Bitmap無法解析爲type_。提前致謝。 – Learner 2017-02-06 06:12:54

回答

1

保持位圖對象爲靜態可能導致潛在的內存泄漏,看到官方文件在 http://android-developers.blogspot.co.uk/2009/01/avoiding-memory-leaks.html

+3

感謝@calvin,我沒有意識到'Bitmap'是'Drawable',因爲在類層次結構中似乎沒有任何關係。只是爲了清楚我使用'android.graphics.Bitmap'而不是'android.graphics.drawable.BitmapDrawable'。如果同樣的警告適用,那麼這個問題最直接的解決方案是什麼? – 2012-01-11 16:35:51

+0

跟進問題:http://stackoverflow.com/questions/8824004/how-to-keep-a-bitmap-in-memory – 2012-01-11 17:42:59

+0

位圖是*不是*可繪製的,所以這個答案是錯的,或者至少不受鏈接內容支持。 – 2017-08-09 14:14:38