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
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 olursagetApplicationContext()
kullanın. Hizmet için kullanılacak statikWakefulIntentService
,WakeLock
örneğingetApplicationContext()
,, kullanıyorum.WakeLock
statik veContext
PowerManager
oluşturmak, gitmem gerek bu yana, en güvenligetApplicationContext()
kullanın.getApplicationContext()
ne zaman bağlamak için birService
Activity
, isterseniz geçirmek içinServiceConnection
(yani, SAP bağlama) arasındaActivity
örnekleri ileonRetainNonConfigurationInstance()
. Android dahiliServiceConnections
bu veri bağlantıları üzerinden izler ve bağlar oluşturmakContexts
başvuruda bulunur. Eğer bağlama denActivity
, yeniActivity
örnek olacak bir başvuru içinServiceConnection
olan bir örtülü referans için eskiActivity
eskiActivity
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 şeylerContext
, mostly related to the GUI başarısız olur.Eğer
getApplicationContext()
bir şey tutarContext
kendi yarattığı kadar temiz değilsin o ararsa bellek sızıntıları oluşturmak. * *56, eğer bir şey üzerine dayanırsa, bir zamanlarActivity
çöp toplama alır bir ile, her şey çok temizler.Application
nesne sürecinin ömür boyu kalır.
Etkinlik Kapsamında Uygulama ve İçerik...
StartActivity() çağıran bir Etkinlik k...
Bahar Yaklaşıyor Uygulama Kapsamında...
Nasıl geçerli ön plan etkinlik kapsamı...
Android tekiz vs Uygulama Kapsamında?...