Context nedir?

Context’in Türkçe manası “bağlam” demektir. O anki sistemde uygulamanın durumu hakkında bilgi sağlayan soyut bir sınıftır. Uygulamadaki kaynaklara referans olarak her yerden erişmemizi sağlar. Kaynak ve servislere erişim sağlarken, ve uygulama düzeyinde işlemler yaparken kullanılır. Mesela bir Toast mesajı, yazdırılırken hangi Activity’de gözükeceğini Context yardımıyla anlar. Yanlış kullanımı memory leak’e sebep olur o yüzden StrictMode ile kontrol edilmesi önerilir. Farklı türde Android Context tipleri vardır onlardan bahsedeyim.

Application Context, getApplicationContext() metoduyla uygulamanın herhangi biryerinden uygulama Context’ini alınır, singleton’dır, uygulamayla aynı yaşam süresine sahiptir.

ListAdapter adapter = new SimpleCursorAdapter(getApplicationContext(), ...);

Activity Context, ActivityName.this yoluyla çağrılır ve Activity ile aynı yaşam süresine sahiptir. Daha çok o Activity içerisindeki objelerde kullanılır. Service’ler de aynı mantıktadır. Activity’nin kendisi Context’i implement eder.

Context
| — ContextWrapper
|— — Application
| — —— ContextThemeWrapper
|— — — — Activity

ContentProvider, herhangi bir Context barındırmaz lakin sahip olunan getContext() metodu ile uygulama Context’i alınabilir.

getApplicationContext().getContentResolver().query(uri, ...);

BroadcastReceiver, kendisi herhangi bir Context barındırmaz. onReceive() metoduyla Context alabilir.

UygulamaActivityServiceContent ProviderBroadcastReceiver
Diyalog göstermeHayırEvetHayırHayırHayır
Activity başlatmaHayırEvetHayırHayırHayır
Layout inflationHayırEvetHayırHayırHayır
Service başlatmaEvetEvetEvetEvetEvet
Service bindingEvetEvetEvetEvetHayır
Broadcast göndermeEvetEvetEvetEvetEvet
BroadcastReceiver kaydetmeEvetEvetEvetEvetHayır
Kaynak yüklemeEvetEvetEvetEvetEvet