SORU
28 HAZİRAN 2010, PAZARTESİ


Web görünümü bellek sızıntısı

Bir web görünümü gömülü olduğu bir etkinlik xml düzeni kullanıyorum. Benim faaliyetteki web görünümü bir kod kullanıyorum değil, hepsi orada xml düzeni oturmuş ve görünür olmak.

Etkinlik bitince şimdi, benim etkinlik bellekten temizlenmez. (Hprof dökümü üzerinden kontrol edin). Etkinlik tamamen xml düzeninden, web görünümü kaldırırsanız olsa temizlenir.

Ben zaten denedim

webView.destroy();
webView = null;

onDestroy() benim etkinlik, ama çok fazla yardımcı olmuyor.

Hprof benim çöplükte, benim etkinlik (adlı) aşağıdaki GC kökleri (destroy() adlı yaptıktan sonra) kalan Tarayıcı vardır:'

com.myapp.android.activity.browser.Browser
  - mContext of android.webkit.JWebCoreJavaBridge
    - sJavaBridge of android.webkit.BrowserFrame [Class]
  - mContext of android.webkit.PluginManager
    - mInstance of android.webkit.PluginManager [Class]  

Başka bir geliştirici benzer bir şey yaşadı, Filipe Abrantes cevabını bakın bunu buldum: http://www.curious-creature.org/2008/12/18/avoid-memory-leaks-on-android/

Gerçekten çok ilginç bir yazı. Son zamanlarda çok zor zamanlar geçirdim sorun giderme bir bellek sızıntısı Android uygulaması. Sonunda ortaya çıktı xml düzeni bir web görünümü dahil bileşen kullanılan olmasa bile,, olmaktan bellek önlenmesi g-toplanan sonra ekrana dönmeler/app bu yeniden... geçerli bir hata uygulama, veya herhangi bir şey varmı tek yapması gereken belirli zaman WebViews kullanarak

Şimdi, ne yazık ki blogda cevap ya bu soru hakkında henüz e-posta listesi var. Bu nedenle, SDK bir hata olduğunu merak ediyorum (belki de http://code.google.com/p/android/issues/detail?id=2181 bildirilen MapView hata benzer)nasıl tamamen bir web görünümü gömülü bellek dışı aktivite?

CEVAP
28 HAZİRAN 2010, PAZARTESİ


Sonuçlandırmak yukarıda açıklamaları ve testler, bu sorun bir hata SDK: oluştururken bir web görünümü ile XML düzeni, etkinlik geçtikçe içeriği için web görünümü, uygulama kapsamında. Bu etkinliği tamamlarken, web görünümü hala faaliyet, faaliyet hafızasından almamaları bu nedenle başvurular devam ediyor. Bunun için bir hata raporu , açıklamayı yukarıda linkini verdim.

webView = new WebView(getApplicationContext());

Eğer sadece web görünümü html görüntülemek için gerekiyorsa, bu geçici çözüm, yalnızca belirli durumlarda kullanmak için çalıştığını unutmayın, yani, olmadan herhangi bir href link ne diyaloglar, bağlantılar, vb. Aşağıdaki yorum bakın.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • EatingIn

    EatingIn

    12 EKİM 2013
  • AutoStream's Garage419

    AutoStream's

    15 EKİM 2007
  • LAHWF

    LAHWF

    5 Kasım 2009