기본 로그인 작업과 인증을 수행하는 활동이 있습니다. 로그인이 성공하면 다른 활동으로 이동할 수 있습니다. 로그인이 실패하거나 부적절한 값이 사용자에 의해 입력 된 경우 동일한 활동을로드 중입니다.android에서 동일한 활동을 여러 번 삭제/삭제하는 방법은 무엇입니까?
내가 직면 한 문제는
입니다. 로그인에 실패하면 동일한 작업이 표시됩니다. 이 작업이 여러 번 수행되면 동일한 작업이 표시됩니다. 내가 완전히 끝내기 전에 같은 활동의 여러 복사본이 표시됩니다. 뒤늦게 쌓여있는 이전 활동을 삭제/삭제할 수 있습니까? 다음은
당신은에 이미Intent intent = new Intent(MainActivity.this,MainActivity.class);
startActivity(intent);
코드 아래 사용
@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를 사용하는 것입니다. 비동기 작업의 메서드는이 작업에 매우 적합합니다. 내가 로그인 작업을 이해한다면 어딘가에 서버에 연결하고 이것이 기본 스레드에서 수행되어야한다는 것입니다. 따라서 비동기 작업을 사용하는 또 하나의 유효한 지점입니다. – Skynet
intent.setFlags (Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); 또는 새 작업을 시작하기 전에 finish()를 호출하십시오. 또는 UI 필드를 지우십시오. – SKT
finish()는 잘 작동합니다.하지만 5 개의 화면이 있다면 어떻게됩니까? ABCDE라고 말하십시오. 이제 모든 작업이 완료되면 E에 있습니다. 아래 코드를 사용하여 활동 B로 이동합니다. startActivity (intent); this.finish(); 이 코드는 E 활동 만 죽일 것입니다.하지만 C, D 활동도 죽이고 싶습니다 ... 어떻게해야합니까? –