Как предотвратить отображение MainActivity при возврате назад, но сохранить состояние приложения при повторном открытии?Android

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Как предотвратить отображение MainActivity при возврате назад, но сохранить состояние приложения при повторном открытии?

Сообщение Anonymous »

Я разрабатываю приложение для Android с тремя действиями: MainActivity, LoginActivity и WebViewActivity. MainActivity — это действие средства запуска, которое определяет, вошел ли пользователь в систему или нет. В зависимости от этого он запускает либо LoginActivity, либо WebViewActivity.
Я определяю MainActivity как средство запуска в AndroidManifest.xml файл. В методе onCreate MainActivity я определяю, какое действие запускать.

Код: Выделить всё

class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
MyAppTheme {

Surface(
modifier = Modifier.fillMaxSize(),
color = colorResource(id = R.color.white)
) {
val intent: Intent = getIntentForInitialLaunch()
startActivity(intent)

// finish() ← tried finishing the activity but did not solve the issue.
}
}
}
}

private fun getIntentForInitialLaunch(): Intent {
val activityToLaunch = if (hasLoggedIn()) {
WebViewActivity::class.java
} else {
LoginActivity::class.java
}
return Intent(this, activityToLaunch)
}
}
Проблема, с которой я столкнулся, связана с поведением кнопки «Назад». Когда пользователь возвращается из LoginActivity или WebViewActivity, он видит MainActivity, который в моем случае представляет собой просто пустой экран. Для удобства пользователя я не хочу, чтобы MainActivity вообще был виден, когда пользователь возвращается назад. Вместо этого я хочу, чтобы приложение отправлялось в фоновый режим и возобновляло действие WebViewActivity при повторном открытии приложения.
Я попробовал вызвать метод Finish() в MainActivity чтобы предотвратить его отображение, но это вызывает другую проблему: когда пользователь повторно открывает приложение в фоновом режиме, оно перезапускается с экрана-заставки, теряя состояние WebViewActivity. Это означает, что пользователь теряет свое место в WebView и должен начинать все сначала с корневого URL-адреса.
Вот краткое описание процесса:

Код: Выделить всё

MainActivity
проверяет статус входа в onCreate().
Если вы вошли в систему, запускает WebViewActivity; если нет, запустите LoginActivity.
Нажатие обратно в LoginActivity или WebViewActivity в настоящее время отображает MainActivity (нежелательно).
Вызов Finish() в MainActivity решает проблему с кнопкой «Назад», но заставляет приложение перезапускаться с экрана-заставки при повторном открытии, теряя состояние WebView.
Как я могу добиться следующего:
Предотвратить видимость MainActivity при возврате из LoginActivity или WebViewActivity.
Сохранять состояние WebViewActivity при повторном открытии приложения из фон.
Мы будем очень признательны за любые предложения или рекомендации по решению этого сценария.

Подробнее здесь: https://stackoverflow.com/questions/785 ... -state-whe
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»