2011-03-24 12 views
5

Şimdi bellek sızıntıları ile mücadele ediyorum. Bu yüzden, görüntüyü el ile yok etmenin herhangi bir yolu var mı (meraklısı onestest yöntemi)? Tüm düzen (etkinlik içeriği Görünümü), üst-alt öğe başvuruları, içerik başvuruları, etiketler vb. Nedeniyle biraz karmaşıktır.görünümü yok (düzen)

GC, düzenimi şimdi toplayamıyor. Ve sorun, görünüm yapısında derin bir şekilde saklanıyor ... Bu yüzden, onu bulmanın tek yolu, yaprak görüntülerini manuel olarak imha etmeyi denemektir; böylece GC bir an için kök görünümü toplayacak ve nerede sorunlu olduğu konusunda bir bilgi verecektir.

My düzen yapısı: ViewFlipper (RelativeLayout, ListView (ViewFlipper (RelativeLayout, RelativeLayout)))

+1

Lütfen etiketleri başlığında yazmayı bırakın. –

cevap

10

Bir ViewGroup'dan bir Görünümü kaldırabilirsiniz, ancak bir görünümü el ile yok etmenin bir yolu yoktur. Bellek sızıntısı alıyorsanız, bu genellikle Bağlamınızın Görünümlerinizin dışında uzun süreli bir referans tuttuğunuz içindir.

  1. statik alanda bir bağlam vardır şey koymayınız (yani Drawables - bitmapler iyidir)
  2. Konular/AsyncTasks içinde Bağlamlarda üzerine tutmayın net tüm zamanlayıcılar,
  3. tüm işleyicileri kaldır veya zayıf referanslı olduklarından emin olursanız.

tüm görüşleri yok edilir çünkü Görünümler (başka bir görünümün Bağlamında yani) diğer Views ilgili bilgileri içermesi de gayet - Bağlam şey tarafından düzenlenen üzerine (ve bağlam vardır çünkü büyük olasılıkla hafızayı boşa çıkaramayacağınız çoğu şey üzerinde - yani tüm Görünümlerinizin - bir kolu).

1

Eğer durdurmak gerekebilir Görüntülemeler herhangi Handler/Mesajlar var mı?

Bir animasyon için düzenli olarak bir Görünüm'e mesaj gönderdiğim benzer bir sorun yaşadım. OnDestroy() aktivitesi tetiklendiğinde mesajları durdurmam/ihmal etmem ve daha fazla kuyruğa girmem gerekiyordu.

+1

Ve evet, sorunuzun özgürlüğü zorlamakla ilgili olduğunu anlıyorum, ancak bunun mümkün olup olmadığını bilmiyorum. En azından, hiç açık bir bellek yönetimi çağrısı görmedim. Keşke orada olsaydı. – CatalystNZ