SORU
27 NİSAN 2012, Cuma


getApplication kullanmaya ne zaman fark(), getApplicationContext(), getBaseContext() ve someClass.bu

Ben yeni android ve deniyorum anlamak arasındaki fark getApplication(), getApplicationContext(), getBaseContext(), getContext() ve someClass.this ve özellikle de kullanılabilecek bu yöntemler aşağıdaki kod satırları:

Ben bunlar arasındaki fark nedir ve ben durumlarda bunları kullanmak bir tost başlatmak?

Toast.makeText(LoginActivity.this, "LogIn successful", Toast.LENGTH_SHORT).show();
Toast.makeText(getApplication(), "LogIn successful", Toast.LENGTH_SHORT).show();
Toast.makeText(getApplicationContext(), "LogIn successful", Toast.LENGTH_SHORT).show();
Toast.makeText(getBaseContext(), "LogIn successful", Toast.LENGTH_SHORT).show();

aynı niyet:

Intent intent = new Intent(getApplicationContext(), LoginActivity.class);
Intent intent = new Intent(MenuPagina., LoginActivity.class);
Intent intent = new Intent(getBaseContext(), LoginActivity.class);
Intent intent = new Intent(getApplication(), LoginActivity.class);

CEVAP
27 NİSAN 2012, Cuma


TostveNiyether iki başvuru gerektirirbağlam. VegetApplication,getApplicationContext,LoginActivity.buvegetBaseContexthepsi bağlama referans sunuyoruz.

Şimdi şey karıştırır farklı ortamlarda ve kendi özel kullanım ilanı. Daha basit Android bağlam çerçevesinde mevcut iki tür saymalısın.

  1. Uygulama Kapsamında
  2. Etkinlik Kapsamında

Uygulamabağlam uygulamanın yaşam döngüsü bağlı ve her zaman uygulama ömrü boyunca aynı olacaktır. Eğer kullanıyorsanızTostbir kadeh uygulama ile her yerden yükseltilmiş olabilir , çünkü uygulama kapsamında ya da etkinlik kapsamında hem bile kullanabilirsiniz ve bir pencereye bağlı değildir.

Faaliyetbağlam Aktivite yaşam döngüsünü bağlı ve etkinliği onDestroy() yükseltilmiş ise yok edilebilir. Eğer yeni bir aktivite başlatmak istiyorsanız, etkinlik kapsamında kullanmanız gerekirNiyetyeni fırlatma aktivitesi mevcut faaliyet (aktivite açısından yığın) bağlı. Ancak, uygulamanın bağlam da yeni bir faaliyet başlatmak için kullanabilirsiniz ama o zaman niyet Intent.FLAG_ACTIVITY_NEW_TASK yeni bir görev olarak ele almaya bayrak ayarlamanız gerekir.

Şimdi durumlar için yönlendirme:

LoginActivity.this rağmen Faaliyet sınıfı ama base sınıfını genişleten kendi sınıfına atıfta onun (Aktivite) de Bağlam sınıfı genişletir, etkinlik kapsamında sunmak için kullanılabilir.

getApplication() ama Uygulama için başvuran, ancak Uygulama sınıfı Kapsamında sınıf uzanır, uygulama içeriği sunmak için kullanılan nesne.

getApplicationContext() uygulama kapsamında bulunmaktadır.

getBaseContext() faaliyet kapsamında bulunmaktadır.

İpuçları: işlemek için gereken Zaman Views gittin Etkinlik KapsamındabaşkaUygulama-İçerikyeterli olacaktır.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • alex maybury

    alex maybury

    20 Aralık 2007
  • Erica Griffin

    Erica Griffi

    8 HAZİRAN 2009
  • Paul Schroder

    Paul Schrode

    30 Kasım 2007