Sobes.tech
Middle

Тафовут байни контексти барнома ва контексти фаъолият чист?

sobes.tech AI

Ҷавоб аз AI

Мавқеи барномаи иловагӣ дастрасӣ ба захираҳои умумии барнома медиҳад ва дар тамоми давраи коркарди барнома амал мекунад. Мавқеи Activity ба давраи ҳаёти Activity муайян вобаста аст, маълумот дар бораи экранҳои махсус дорад ва дастрасӣ ба захираҳои махсуси он (масалан, мавзӯъ) медиҳад.

Тафовутҳои асосӣ:

  • Вақти зиндагӣ: Мавқеи барнома дар тамоми давраи коркарди барнома зиндагӣ мекунад, дар ҳоле ки мавқеи Activity танҳо дар вақти фаъол будани он кор мекунад.
  • Ҳудуд: Мавқеи барнома барои тамоми барнома глобалӣ аст, мавқеи Activity маҳдуд ба экранҳои муайян.
  • Дастрасӣ ба захираҳо: Мавқеи барнома барои захираҳои умумӣ, мавқеи Activity барои захираҳои махсуси Activity (масалан, мавзӯъ) истифода мешавад.
  • Пайвастшавӣ ба хотира: Истифодаи нодуруст аз мавқеи Activity (масалан, нигоҳ доштани он дар майдони статикӣ) метавонад ба паҳншавии хотира оварда расонад, зеро он ба Activity ва захираҳои он ишора мекунад. Мавқеи барнома барои нигоҳдории дарозмуддат бехатартар аст.

Маслиҳатҳо барои истифода:

  • Гирифтани сатрҳо ё рангҳои умумӣ:
    // Дар ҳар ҷое дар барнома
    val appName = applicationContext.getString(R.string.app_name)
    
  • Эҷоди View дар Activity:
    // Дар дохили Activity
    val textView = TextView(this /* ё this@MyActivity */)
    
  • Ифтитоҳи Activity нав:
    // Дар дохили Activity
    val intent = Intent(this, AnotherActivity::class.java)
    startActivity(intent)
    
  • Дастрасӣ ба SharedPreferences:
    // Ҳар ду контекст кор мекунанд, аммо при истифодаи Context.MODE_PRIVATE, беҳтар аст, ки контексти Activity истифода шавад
    val prefs = getSharedPreferences("my_prefs", Context.MODE_PRIVATE)
    

Муҳим аст, ки контексти мувофиқро истифода баред, то аз паҳншавии хотира ва рафтори дурустии барнома муҳофизат кунед. Дар аксари ҳолатҳо, барои амалиётҳои махсуси UI, контексти Activity истифода мешавад, ва барои вазифаҳои бе алоқамандӣ бо экран, — контексти барнома.