Context (контекст) в Android — это абстрактный класс (android.content.Context
), который предоставляет доступ к информации о состоянии приложения и системе. Это фундаментальная концепция, которая связывает компоненты приложения с Android-системой.
В Android есть несколько реализаций Context:
Получается через getApplicationContext()
. Живет все время работы приложения.
val appContext = applicationContext
Когда использовать:
Получается через this
в Activity. Привязан к жизненному циклу Activity.
class MainActivity : AppCompatActivity() {
val activityContext = this
}
Когда использовать:
Аналогичен Application Context, но привязан к жизненному циклу Service.
Характеристика | Application Context | Activity Context |
---|---|---|
Время жизни | Все приложение | Только жизнь Activity |
Доступ к UI | Нет | Да |
Theme | Без темы | С учетом темы Activity |
Диалоги | Нельзя показывать | Можно показывать |
// Плохо: Activity не сможет быть собрана GC
class Singleton {
companion object {
var context: Context? = null
}
}
// Лучше:
class Singleton(val appContext: Context) {
init {
this.appContext = appContext.applicationContext
}
}
val appName = context.getString(R.string.app_name)
val intent = Intent(context, MainActivity::class.java)
context.startActivity(intent)
val prefs = context.getSharedPreferences("my_prefs", Context.MODE_PRIVATE)
val vibrator = context.getSystemService(Context.VIBRATOR_SERVICE) as Vibrator