Android programlamada Context
sınıfı tam olarak nedir ve ne için kullanılır?
Bu konuyu geliştirici sitesinde okudum, ancak net bir şekilde anlayamadım.
Basitçe söylemek gerekirse:
Adından da anlaşılacağı gibi, uygulamanın/nesnenin mevcut durumunun bağlamıdır. Yeni oluşturulan nesnelerin neler olup bittiğini anlamasını sağlar. Genellikle programınızın başka bir bölümüyle (aktivite ve paket/uygulama) ilgili bilgi almak için çağırırsınız.
Bağlamı getApplicationContext()
, getContext()
, getBaseContext()
veya this
(Application, Activity, Service ve IntentService sınıfları gibi Context
ten genişleyen bir sınıfta olduğunda) çağırarak elde edebilirsiniz.
Bağlamın tipik kullanımları:
Yeni nesneler oluşturma: Yeni görünümler, adaptörler, dinleyiciler oluşturma:
TextView tv = new TextView(getContext());
ListAdapter adapter = new SimpleCursorAdapter(getApplicationContext(), ...);
Standart ortak kaynaklara erişim: LAYOUT_INFLATER_SERVICE, SharedPreferences gibi hizmetler:
context.getSystemService(LAYOUT_INFLATER_SERVICE)
getApplicationContext().getSharedPreferences(*name*, *mode*);
Bileşenlere dolaylı olarak erişme: İçerik sağlayıcılar, yayınlar, niyet ile ilgili olarak
getApplicationContext().getContentResolver().query(uri, ...);
Bağlam, sistem için bir tutamaçtır; kaynakları çözümleme, veritabanlarına ve tercihlere erişim elde etme gibi hizmetler sağlar. Bir Android uygulamasının etkinlikleri vardır. Context, uygulamanızın o anda çalıştığı ortamın bir tanıtıcısı gibidir. Aktivite nesnesi Context nesnesini miras alır.
Daha fazla bilgi için Android Studio ile Android geliştirmeye giriş - Öğretici bölümüne bakın.
Bir Android Context, uygulamaya özel kaynaklara ve sınıfa ve uygulama ortamı hakkındaki bilgilere erişime izin veren bir Interface (genel anlamda, Java anlamında değil; Java'da `Context' aslında soyut bir sınıftır!
Eğer android uygulamanız bir web uygulaması olsaydı, bağlamınız ServletContext
e benzer bir şey olurdu (burada tam bir karşılaştırma yapmıyorum).
Aktiviteleriniz ve hizmetleriniz de Context
i genişletir, böylece uygulamanın çalıştığı ortam bilgilerine erişmek için tüm bu yöntemleri miras alırlar.