2012-01-11 23 views
5

Küçük bir bitmap görüntüleyen bir görünüm var ve bu, uygulamamdaki birçok yerde (özellikle liste görünümleri) kullanılıyor. Şu anda bu görüntünün bir örneği BitmapFactory.decodeResource(resource, id) kullanılarak oluşturulduğunda bu bitmap'i yüklüyorum. Bu bitmapi bir kez statik bir değişkene yükleyerek (görüntülemenin tüm örneklerini yeniden kullanacak şekilde) ve gerçekten de görünüm örneği başına yaklaşık 2-4 ms kaydederek performansı artırabileceğimi fark ettim. Sorum şu, bu şekilde statik bir değişken kullanmak Android'de herhangi bir bellek sızıntısına neden oluyor? Endişeleniyorum çünkü böyle bir bitmapi depolamak için statik bir değişken kullanan başka bir örnek bulamadım.Bir Bitmap kaynağını statik bir değişkende saklama

Takip soru: statik potansiyel hafıza sızıntıları neden olabileceğinden bitmap nesnelerini tutulması How to keep a Bitmap in memory

+2

resmi belgeler, bkz görünüm Çizelge üzerinde bir geri arama olarak ayarlanır .. Yukarıdaki kod snippet'inde bu, çekilebilsin TextView'e bir referansı olduğu anlamına gelir, ki bu da kendisinin (içeriğindeki) bir referansa sahip olduğu anlamına gelir. code.) "... bu yüzden onu statik tutmak bir bellek sızıntısına neden olacaktır. – Nitin

+1

Teşekkür @ 0cool, Bu yazıyı görmüştüm ama bir android.graphics.Bitmap' ('android.graphics.drawable.BitmapDrawable' değil) de 'Drawable' olduğundan emin değilim. Bu gerçekten durum mu? –

+0

Merhaba, @AbdullahJibaly Bitmap'i kullanmadan önce bir şeyi içe veya dışa aktarmamız mı gerekiyor? “Bitmap aygıtı” yapıyorum ve IDE, _Bitmap'in bir tip_ çözümüne çözümlenememesi hatası veriyor. Şimdiden teşekkürler. – Learner

cevap

1

, bir Drawable bir görünüme takıldığında" romain adamı alıntı http://android-developers.blogspot.co.uk/2009/01/avoiding-memory-leaks.html

+3

Teşekkürler @calvin, “Bitmap” nin bir “Çizilebilir” olduğunu anlamıştım çünkü sınıf hiyerarşisinde herhangi bir ilişki görünmüyor. Sadece açık olmak gerekirse ben bir android.graphics.Bitmap '' android.graphics.drawable.BitmapDrawable' kullanıyorum. Aynı uyarı geçerli olursa, bu problem için en doğru çözüm hangisidir? –

+0

Takip eden soru: http://stackoverflow.com/questions/8824004/how-to-keep-a-bitmap-in-memory –

+0

A Bit eşlem * * çekilemez, bu yüzden bu cevap yanlış ya da en azından bağlantının içeriği tarafından desteklenmiyor. –

İlgili konular