2012-02-03 8 views
41

yılında getApplicationContext veya Activity.this kullanmalıyım. Tüm süreç birkaç istek ve cevap içerebilir. Veri tabanından veri okumak, göndermek ve cevabı ele almak ve veritabanımı buna göre güncellemek zorundayım. Veritabanından veri okumak ve güncellemek için içerik sağlayıcıları kullanıyorum. Ben o zaman benim sunucuya bazı veri gönderir ve uzun süren bir zaman uyumsuz Görev durur gelmiş uzun bir çalışan AsyncTask

Şimdi bağlama getContentResolver() yöntemi çağırmak zorunda İçerik Sağlayıcı kullanmak. Bu yüzden getApplicationContext kullanmam mı yoksa sadece Activity.this yöntemlerini kullanmamı mı merak ediyorum.

like this numaralı bir kaç mesaj gördüm ve bu ikisi arasındaki farkı açıklıyorlar, mümkünse getApplicationContext'u kullanmamamızı tavsiye ediyorlar. Ben Activity tahrip veya yönünü değiştirip zaman benim AsyncTaskActivity.this gelen bağlam kaybetmek istemiyoruz rağmen. Bu yüzden benim durumumda getApplicationContext kullanıp kullanamayacağımı ya da Activity.this numaralı telefonu kullanmam gerektiğini merak ediyorum.

cevap

84

seçeneklerin her kullanmak için bir sebep yoktur. UI değiştirmek amacıyla size bağlamı kullanırken

, sen istisna (as described here ve here) neden olabilir uygulama bağlamını kullanarak bazı durumlarda bu yana, Aktivite bağlamını kullanmalıdır.

arası etkinlik kullanımında bağlamını kullanan
TextView senderNameTextView = new TextView(getApplicationContext()); 

, daha sonra etkinlik yok olsa bile bu yana, bu olmayacak, eyleme Etkinlik bağlamı bağlamak gerekir: Aşağıdaki örneğinde olduğu gibi bu tür hala çalışan görevden atıfta bulunulan, çöp toplanan. Bu durumlarda, Uygulama içeriğini kullanmalısınız. Daha fazla ayrıntı için the article in Android Developer's site (Romain Guy tarafından yazılmıştır). Yalnızca getContentResolver aramaya bağlamını kullanıyorsanız

, Uygulama bağlamını kullanmalıdır.

+0

"Burada açıklandığı gibi" için teşekkürler. –

İlgili konular