Я пытаюсь разработать активность входа в Android и использую следующий метод для входа в систему:
private void attemptLogin() {
/*if (mAuthTask != null) {
return;
}*/
// Reset errors.
mEmailView.setError(null);
mPasswordView.setError(null);
// Store values at the time of the login attempt.
String email = mEmailView.getText().toString();
String password = mPasswordView.getText().toString();
boolean cancel = false;
View focusView = null;
// Check for a valid password, if the user entered one.
if (!TextUtils.isEmpty(password) && !isPasswordValid(password)) {
mPasswordView.setError(getString(R.string.error_invalid_password));
focusView = mPasswordView;
cancel = true;
}
// Check for a valid email address.
if (TextUtils.isEmpty(email)) {
mEmailView.setError(getString(R.string.error_field_required));
focusView = mEmailView;
cancel = true;
} else if (!isEmailValid(email)) {
mEmailView.setError(getString(R.string.error_invalid_email));
focusView = mEmailView;
cancel = true;
}
if (cancel) {
// There was an error; don't attempt login and focus the first
// form field with an error.
focusView.requestFocus();
} else {
// Show a progress spinner, and kick off a background task to
// perform the user login attempt.
showProgress(true);
RetrofitAPIService retrofitAPIService = RetrofitAPIService.aRetrofitApiService();
final Handler handler = new Handler();
new Thread(new Runnable() {
@Override
public void run() {
/*authService.login(email, password);*/
UserAuthCommand userAuthCommand = new UserAuthCommand(email, password);
UserProfile userProfile = retrofitAPIService.authorizeUser(userAuthCommand);
Runnable runnable = new Runnable() {
@Override
public void run() {
if (userProfile != null) {
Intent intent = new Intent(getApplicationContext(), HomeActivity.class);
startActivity(intent);
} else {
Toast.makeText(getApplicationContext(), "Bad", Toast.LENGTH_SHORT).show();
}
}
};
LoginActivity.this.runOnUiThread(runnable);
/* final Looper looper = Looper.myLooper();
looper.quit();*/
}
}).start();
//new UserLoginTask(email, password).execute((Void) null);
}
}
Я вызываю этот метод, нажимая кнопку входа, переопределяя настройку setOnClickListener и переопределяя onClick ().
Моя проблема в том, что когда я ввожу неправильные учетные данные, на экране отображается тост, но бэкэнд заходит в бесконечный цикл. Я сделал некоторую отладку и похоже, что текущий поток переходит в метод loop () из Looper.class.
Кто-нибудь может мне помочь? Огромное спасибо!