Sobes.tech
Junior
101
questionbank

Как определить, что активити открывается в первый раз?

Ответ от нейросети

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 {
            // Это не первый запуск
        }
    }
}