Junior
98
questionbank
Как определить, что активити открывается в первый раз?
Answer from AI
sobes.tech AI
Можно проверить наличие сохраненного состояния в onCreate: если null, активити создается впервые (без восстановления после уничтожения). Также можно использовать флаг в SharedPreferences или статическую переменную, но это менее надежные подходы для определения именно первого запуска активити в рамках текущего процесса.
class MyActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_my)
if (savedInstanceState == null) {
// Активити создается впервые
// Или восстанавливается после уничтожения без сохранения состояния
} else {
// Активити восстанавливается из сохраненного состояния
}
}
}
Для определения первого запуска приложения или первого открытия конкретного экрана за весь срок установки, используются SharedPreferences:
class MyActivity : AppCompatActivity() {
private val PREFS_NAME = "MyPrefs"
private val KEY_FIRST_LAUNCH = "firstLaunch"
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_my)
val prefs = getSharedPreferences(PREFS_NAME, MODE_PRIVATE)
val isFirstLaunch = prefs.getBoolean(KEY_FIRST_LAUNCH, true)
if (isFirstLaunch) {
// Это первый запуск приложения или этого экрана
// Выполнить действия для первого запуска
// Сохранить флаг, что первый запуск уже выполнен
val editor = prefs.edit()
editor.putBoolean(KEY_FIRST_LAUNCH, false)
editor.apply()
} else {
// Это не первый запуск
}
}
}