У меня есть активность, которая выполняет основную операцию входа и аутентификацию. Я могу перейти к другому действию при успешном входе в систему. Я загружаю ту же самую активность, если логин завершается с ошибкой или если пользователь вводил неправильные значения.Как удалить/убить несколько копий одной и той же активности в Android?
Проблемы Я облицовка
Когда Логин не удается, я показываю ту же деятельность. Если это делается несколько раз, отображается такая же активность. Когда я нажимаю назад, появляется несколько копий того же самого действия, прежде чем я смогу полностью выйти. Как удалить/убить предыдущие действия, которые накапливаются?
Ниже мой код в MainActivity.java
@Override
public void onClick(View v) {
if(!email.getText().toString().isEmpty() && (!password.getText().toString().isEmpty()))
{
isValid = login_validation(email.getText().toString());
if (isValid) {
SharedPreferences sharedpreferences = getSharedPreferences(
"MyData", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedpreferences.edit();
editor.putString("email", email.getText().toString());
editor.putString("password", password.getText().toString());
editor.commit();
Toast.makeText(MainActivity.this, "Login Successful",Toast.LENGTH_LONG).show();
Intent intent = new Intent(MainActivity.this,Second_Activity.class);
startActivity(intent);
}
else
{
Toast.makeText(MainActivity.this, "Login Failed. Please enter correct credentials",Toast.LENGTH_LONG).show();
Intent intent = new Intent(MainActivity.this,MainActivity.class);
startActivity(intent);
}
}
else
{
Toast.makeText(MainActivity.this, "Email/Password cannot be empty",Toast.LENGTH_LONG).show();
Intent intent = new Intent(MainActivity.this,
MainActivity.class);
startActivity(intent);
}
}
});
Спасибо заранее
Лучший способ сделать это - использовать AsyncTask. Методы задачи Async очень хорошо подходят для этой операции. То, что я понимаю в операции входа в систему, заключается в том, что вы где-то подключаетесь к серверу, и это должно быть сделано из основного потока - следовательно, еще одна действительная точка для использования задачи Async. – Skynet
intent.setFlags (Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); or call finish() перед началом нового действия Или просто очистите поля пользовательского интерфейса – SKT
finish() работает нормально .. Но что, если у меня есть 5 экранов .. Скажите ABCDE Теперь я нахожусь в E, если все мои работы выполнены Я перехожу к активности B, используя приведенный ниже код startActivity (intent); this.finish(); этот код будет убивать только E-активность, но я тоже хочу убить действия C, D ... Как это сделать? –