Middle
Milline on erinevus rakenduse konteksti ja tegevuse konteksti vahel?
sobes.tech AI
Vastus AI-lt
Rakenduse kontekst võimaldab juurdepääsu rakenduse üldistele ressurssidele kogu rakenduse eluea jooksul. Activity kontekst on seotud konkreetse Activity elutsükliga, sisaldab teavet konkreetse ekraani kohta ning võimaldab juurdepääsu selle Activity spetsiifilistele ressurssidele (näiteks kujundusteemad).
Peamised erinevused:
- Eluaeg: Rakenduse kontekst kehtib kogu rakenduse tööaja jooksul, Activity kontekst ainult siis, kui vastav Activity töötab.
- Vaadete ulatus: Rakenduse kontekst on globaalselt kogu rakenduse jaoks, Activity kontekst on konkreetse ekraani jaoks.
- Resurssidele juurdepääs: Rakenduse kontekst on mõeldud üldiste ressursside jaoks, Activity kontekst spetsiifiliste ressursside (näiteks teema) jaoks.
- Mälu lekked: Vale kasutamine, näiteks Activity konteksti hoidmine staatilises väljas, võib põhjustada mälulekkeid, kuna see viitab Activity-le ja selle ressurssidele. Rakenduse kontekst on pikaajaliseks säilitamiseks turvalisem.
Kasutusnäited:
- Üldiste ridade või värvide saamine:
// Igas rakenduse kohas val appName = applicationContext.getString(R.string.app_name) - Vaate loomine Activity-s:
// Activity sees val textView = TextView(this /* või this@MyActivity */) - Uue Activity käivitamine:
// Activity sees val intent = Intent(this, AnotherActivity::class.java) startActivity(intent) - Juurdepääs SharedPreferences'ile:
// Mõlemad kontekstid töötavad, kuid kasutades Context.MODE_PRIVATE, on eelistatud Activity kontekst val prefs = getSharedPreferences("my_prefs", Context.MODE_PRIVATE)
Oluline on kasutada sobivat konteksti, et vältida mälulekkeid ja tagada rakenduse õige toimimine. Enamasti kasutatakse UI-spetsiifiliste operatsioonide jaoks Activity konteksti, ülesannete jaoks, mis ei ole seotud konkreetse ekraaniga, aga rakenduse konteksti.