Etkinlik ve Bağlam arasındaki fark nedir?


92

Etkinlik ve Bağlam aynı mı yoksa farklılıklar var mı?

Bir yönteme ne zaman bir Aktivite geçirmeliyim ve bir Bağlam ne zaman?


@Egor Thnx adamım ve huysuzca bununla ilgileneceğim .. soru sormadan önce .. bana bir soru daha yardım edebilir misin .. android'deki tüm aktivitelerin kökü nedir
Android

soruyu temizlemek için lütfen aşağıdaki tartışmayı kontrol edin
Egor

Ne yazık ki bu cevapların hiçbiri tam değil. Bu, bir google araması için açılan ilk öğedir.
SMBiggs

Yanıtlar:


118

Anladığım kadarıyla: Bağlam Temel Nesnedir. Dolayısıyla , Uygulama ile aynı olan her Etkinlik , Bağlamdan türetilir. Bu, her Faaliyetin ve her Faaliyetin a ;ApplicationContext

Gönderen developer.android.com Faaliyet

java.lang.Objectandroid.content.Contextandroid.content.ContextWrapperandroid.view.ContextThemeWrapperandroid.app.Activity

Ve Uygulama

java.lang.Objectandroid.content.Contextandroid.content.ContextWrapperandroid.app.Application

Bir Uygulama bağlamı, uygulamanız canlı olduğu sürece devam ederken, Aktivite bağlamı Aktiviteniz ile birlikte ölür (bu Aktiviteden sonra geçerli değildir onDestroy).

Dolayısıyla, Aktiviteler Arası Bağlama ihtiyacınız varsa (yani, bir Tekil olarak) bir Uygulama bağlamı kullanmanız daha iyi olacaktır.

Genellikle bir bağlamın beklendiği Android Framework yöntemlerinde, hangisini geçtiğinizin hiçbir önemi yoktur. Ancak, bir Bağlama Yönelik Uzun Ömürlü Referanslar tutuyorsanız her zaman MemoryLeaks'in farkında olun


2
Evet, özür dilerim, bağlantıyı kontrol ettim, gerçekten de Bağlam bir Aktivite üst sınıfı. Her neyse, Aktivitenin bir Bağlam olduğunu, Aktivitenin daha karmaşık bir nesne olduğunu, Bağlamın ise bilgiyi tutan ve kaynaklara erişim sağlayan bir blok olduğunu söylemek tamamen doğru değildir.
Egor

@Rafael T Thnx doğru cevap verdiği için
Android

17
Nesne Yönelimli dillere atıfta bulunursam tamamen doğrudur: Java'daki her Nesne, Object.class'tan türetilir, bu nedenle FACT'te her şey bir Nesnedir. Daha spesifik olmak gerekirse: Aktivite, Bağlamın bir uzmanlığıdır. Soyut Sınıf Hayvanım ve Hayvandan (Kedi, Köpek) türetilmiş iki Sınıfım varsa, bu ikisi en azından Hayvanlardır. Bir Hayvanın gerekli olduğu her yerde, Context için de aynı olduğu gibi, Kedileri veya Köpekleri geçebilirsiniz! Lütfen beni olumsuz oylamadan önce Bilgileri onaylayın
Rafael T

1
"Aktivite bağlamı, uygulamanız canlı olduğu sürece devam ederken Aktivite bağlamı Aktiviteniz ile birlikte ölür" kapalı görünüyor. İlki Uygulama bağlamı olmamalı mı ?
FirstOne

8

Android belgesinde görebileceğiniz gibi :

Activity sınıfı "ContextThemeWrapper" dan ve bu "ContextWrapper" dan ve "Context" ten genişler.

Yani, evet, Bir Etkinlik Bağlamı genişletir!

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.