#android #android-activity
#Android #android-активность
Вопрос:
У меня есть экран входа в систему, на котором пользователь входит в систему. После этого пользователь попадет на главный экран.
Теперь моя проблема в том, что при нажатии кнопки «Назад» пользователь снова переходит на экран входа в систему.
Есть ли какой-нибудь способ исправить эту проблему?
Я пытался позвонить finish()
сразу после startActivity()
, но это только привело к сбою приложения и тоже не показалось хорошим решением.
Комментарии:
1. можете ли вы вызвать функцию finish () после успешного входа пользователя в систему вместо того, чтобы вызывать ее сразу после запуска?
2. опубликуйте трассировку стека из logcat, когда приложение завершит работу после вызова finish
3. Я считаю, что ответ @ThaneAnthem более правильный. Вероятно, вам следует принять его ответ вместо моего.
Ответ №1:
В манифесте добавьте android:noHistory="true"
в качестве атрибута действие входа в систему.
Комментарии:
1. сэр, добавив этот атрибут, когда я нажимаю на выход из системы, приложение закрывается вместо возврата к экрану входа в систему
Ответ №2:
Вызов finish()
после startActivity()
— это правильный путь. Вам следует выяснить, почему в этом случае происходит сбой.
Ответ №3:
Рассмотрите возможность запуска основного приложения, а затем запустите экран входа в систему в виде пользовательского модального диалога.
Советы по модальному запуску:
builder.setCancelable(false)
- Не используйте статический метод и вызывайте show(), как в примерах лицензионного соглашения с открытым исходным кодом. Эта реализация завершается с ошибкой, если пользователь поворачивает телефон. Вместо этого используйте стандартный шаблон onCreateDialog, getInstanceMyDialog, ShowDialog(int).
- Модальное диалоговое окно может возвращать данные, если вы вызываете его с помощью startActivityForResult, или модальное диалоговое окно может записывать данные в файл пользовательских настроек.
Ответ №4:
- Если вы никогда больше не вернетесь к активности входа в систему, добавьте
android:noHistory=true
в манифест. -
Если вы хотите вернуться к входу в систему только с определенного действия (скажем, с использованием пароля), переопределите
onBackPressed()
:@Override
public void onBackPressed() {
super.onBackPressed();
}вашего «главного экрана», который появляется после ввода логина / пароля с помощью приведенного ниже кода,
Intent homeIntent = Intent(Intent.ACTION_MAIN);
homeIntent.addCategory( Intent.CATEGORY_HOME );
homeIntent.flags = Intent.FLAG_ACTIVITY_CLEAR_TOP;
startActivity(homeIntent);это сведет к минимуму действие вашего приложения при обратном нажатии и не вернет к действию при входе в систему / вводе пароля.
-
Если вы хотите закрыть приложение, используйте
android.os.Process.killProcess(android.os.Process.myPid());
-
для выхода из приложения
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN){
this.finishAffinity()
}