SORU
4 EYLÜL 2011, Pazar


Etkinlik kapsamında YA da uygulama kapsamında çağrı ne zaman?

Her iki durum.. ne mesajın var Ama hala adam gibi alamıyorum

Anladığım kadarıyla: Her bazı programcılar this.getApplicationContext() mümkün olduğunca sık "" herhangi bir bellek. sızıntı yok etmek için kullanılması tavsiye edilir bunun anlamı, kendi sınıfının bir örneğidir Çünkü diğer this (alma Activity örnek içerik) noktaları için Activity olması yok her zaman kullanıcı yatırır telefon veya terk uygulama vb. Hangi görünüşe göre Çöp Toplayıcı (GC) yok yakalamak ve bu nedenle çok fazla bellek kullanır..

Ama herkes lütfen gelin ile bazı gerçekten iyi kodlama örnekleri nerede olacağını doğru olanı için kullanın. this (alma bağlamında mevcut Activity örnek) ve uygulama kapsamında olacak gereksiz/yanlış?

CEVAP
4 EYLÜL 2011, Pazar


getApplicationContext() neredeyse her zaman yanlıştır. Ms. Hackborn (diğerleri arasında) olduğu çok açıksadecebiliyorum getApplicationContext() kullanınnedensadece zaman getApplicationContext() ve kullanıyorsunuzgerekgetApplicationContext() kullanın.

Açık söylemek gerekirse, "bazı programcılar" Java deneyimi sınırlıdır. çünkü getApplicationContext() (ya da daha az bir ölçüde getBaseContext(),) kullanın Onlar bir iç sınıf (örneğin, Activity Button OnClickListener) uygulamak ve Context bir ihtiyaç. MyActivity.this dış sınıf' this, getApplicationContext() getBaseContext() Context bir nesneyi almak için kullanın. almak için kullanmak yerine

Sanasadecesen ne zaman getApplicationContext() kullanınbiliyorumemrinde Context bir daha herhangi başka Context Olası canlı bir şey için ihtiyacın var. Senaryolar şunlardır:

  • Eğer bir genel kapsama sahip olacak Context bir bağlı ihtiyacın olursa getApplicationContext() kullanın. Hizmet için kullanılacak statik WakefulIntentService, WakeLock örneğin getApplicationContext(),, kullanıyorum. WakeLock statik ve Context PowerManager oluşturmak, gitmem gerek bu yana, en güvenli getApplicationContext() kullanın.

  • getApplicationContext() ne zaman bağlamak için bir Service Activity, isterseniz geçirmek için ServiceConnection (yani, SAP bağlama) arasında Activity örnekleri ile onRetainNonConfigurationInstance(). Android dahili ServiceConnections bu veri bağlantıları üzerinden izler ve bağlar oluşturmak Contexts başvuruda bulunur. Eğer bağlama den Activity, yeni Activity örnek olacak bir başvuru için ServiceConnection olan bir örtülü referans için eski Activity eski Activity olamaz çöp topladı.

Bazı geliştiriciler getApplicationContext() ile ölçülen sonuç kendi genel verileri Application özel alt sınıflarını kullanın. Bu, imkansız değil. Statik veri üyeleri, sadece olabilir daha başka bir nedenle eğer için tercih ederimbirözel Application nesne. Bir app Application özel bir nesne kullanarak yaptım ve ağrılı bulundu. Ms. Hackborn also agrees with this position.

İşte nedenlerideğilnereye giderseniz gidin getApplicationContext() kullanmak için:

  • Activity yok ** 51, tam destek her şey değil. Bunu yapmak için çalışacağız çeşitli şeyler Context, mostly related to the GUI başarısız olur.

  • Eğer getApplicationContext() bir şey tutar Context kendi yarattığı kadar temiz değilsin o ararsa bellek sızıntıları oluşturmak. * *56, eğer bir şey üzerine dayanırsa, bir zamanlar Activity çöp toplama alır bir ile, her şey çok temizler. Application nesne sürecinin ömür boyu kalır.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • LatinNinja99

    LatinNinja99

    28 EKİM 2011
  • PlugResearch

    PlugResearch

    22 Mart 2006
  • thelonelyisland

    thelonelyisl

    23 Aralık 2005