Android'de 'Context' nedir?

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.

Çözü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 Contextten 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, ...);
Yorumlar (6)

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.

Yorumlar (0)

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 ServletContexte benzer bir şey olurdu (burada tam bir karşılaştırma yapmıyorum).

Aktiviteleriniz ve hizmetleriniz de Contexti genişletir, böylece uygulamanın çalıştığı ortam bilgilerine erişmek için tüm bu yöntemleri miras alırlar.

Yorumlar (0)