Sobes.tech
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.