Middle
V čem spočívá rozdíl mezi kontextem aplikace a kontextem aktivity?
sobes.tech AI
Odpověď od AI
Kontext aplikace poskytuje přístup k globálním zdrojům aplikace a má životnost po celou dobu běhu aplikace. Kontext aktivity je vázán na životní cyklus konkrétní aktivity, obsahuje informace o konkrétní obrazovce a umožňuje přístup ke zdrojům specifickým pro tuto aktivitu (například téma).
Hlavní rozdíly:
- Délka života: Kontext aplikace žije po celou dobu běhu aplikace, zatímco kontext aktivity pouze dokud je daná aktivita aktivní.
- Rozsah: Kontext aplikace je globální pro celou aplikaci, kontext aktivity je lokální pro konkrétní obrazovku.
- Přístup ke zdrojům: Kontext aplikace je určen pro obecné zdroje, kontext aktivity pro zdroje specifické pro danou aktivitu (například téma).
- Únik paměti: Nesprávné použití kontextu aktivity (například jeho ukládání do statického pole) může vést k únikům paměti, protože odkazuje na aktivitu a její zdroje. Kontext aplikace je bezpečnější pro dlouhodobé uložení.
Příklady použití:
- Získání obecných řetězců nebo barev:
// Kdekoli v aplikaci val appName = applicationContext.getString(R.string.app_name) - Vytvoření pohledu v aktivitě:
// Uvnitř aktivity val textView = TextView(this /* nebo this@MyActivity */) - Spuštění nové aktivity:
// Uvnitř aktivity val intent = Intent(this, JináActivity::class.java) startActivity(intent) - Přístup ke SharedPreferences:
// Oba kontexty fungují, ale při použití Context.MODE_PRIVATE je vhodnější kontext aktivity val prefs = getSharedPreferences("moje_prefs", Context.MODE_PRIVATE)
Je důležité používat odpovídající kontext, aby se předešlo únikům paměti a správnému chování aplikace. Ve většině případů se pro operace specifické pro UI používá kontext aktivity, pro úkoly nesouvisející s konkrétní obrazovkou je vhodnější kontext aplikace.