Middle
V čom spočíva rozdiel medzi kontextom aplikácie a kontextom aktivity?
sobes.tech AI
Odpoveď od AI
Kontekst aplikácie poskytuje prístup k globálnym zdrojom aplikácie a má životnosť počas celého behu aplikácie. Kontekst aktivity je viazaný na životný cyklus konkrétnej aktivity, obsahuje informácie o konkrétnom displeji a umožňuje prístup k zdrojom špecifickým pre túto aktivitu (napríklad tému).
Hlavné rozdiely:
- Dĺžka života: Kontekst aplikácie žije počas celého behu aplikácie, zatiaľ čo kontext aktivity iba počas toho, ako je daná aktivita aktívna.
- Rozsah: Kontekst aplikácie je globálny pre celú aplikáciu, kontext aktivity je lokálny pre konkrétny displej.
- Prístup ku zdrojom: Kontekst aplikácie je určený pre všeobecné zdroje, kontext aktivity pre zdroje špecifické pre túto aktivitu (napríklad tému).
- Únik pamäte: Nesprávne použitie kontextu aktivity (napríklad jeho uloženie do statického poľa) môže viesť k únikom pamäte, pretože odkazuje na aktivitu a jej zdroje. Kontekst aplikácie je bezpečnejší pre dlhodobé uloženie.
Príklady použitia:
- Získanie všeobecných reťazcov alebo farieb:
// Kdekoľvek v aplikácii val appName = applicationContext.getString(R.string.app_name) - Vytvorenie pohľadu v aktivite:
// Vo vnútri aktivity val textView = TextView(this /* alebo this@MyActivity */) - Spustenie novej aktivity:
// Vo vnútri aktivity val intent = Intent(this, InáActivity::class.java) startActivity(intent) - Prístup k SharedPreferences:
// Oba kontexty fungujú, ale pri použití Context.MODE_PRIVATE je vhodnejší kontext aktivity val prefs = getSharedPreferences("moje_prefs", Context.MODE_PRIVATE)
Je dôležité používať vhodný kontext na zabránenie únikom pamäte a zabezpečenie správneho správania aplikácie. Vo väčšine prípadov sa pre operácie špecifické pre UI používa kontext aktivity, pre úlohy, ktoré nie sú viazané na konkrétnu obrazovku, je vhodnejší kontext aplikácie.