public class UserLoginTask extends AsyncTask<Void, Void, Boolean> {
// Flag for login flow
private boolean flag = true;
private final String mEmail;
private final String mPassword;
UserLoginTask(String email, String password) {
mEmail = email;
mPassword = password;
}
@Override
protected Boolean doInBackground(Void... params) {
mKinveyClient.user().login(mEmail, mPassword, new KinveyUserCallback() {
@Override
public void onSuccess(User user) {
CharSequence text = "Welcome back," + user.getUsername() + ".";
Toast.makeText(getApplicationContext(), text, Toast.LENGTH_SHORT).show();
}
@Override
public void onFailure(Throwable t) {
CharSequence text = "Wrong username or password.";
Toast.makeText(getApplicationContext(), text, Toast.LENGTH_SHORT).show();
flag = false;
}
});
return flag;
}
@Override
protected void onPostExecute(final Boolean success) {
mAuthTask = null;
showProgress(false);
if (success) {
Intent intent = new Intent(getApplicationContext(), MainActivity.class);
startActivity(intent);
} else {
mPasswordView.setError(getString(R.string.error_incorrect_password_or_username));
mEmailView.setText("");
mPasswordView.setText("");
mEmailView.requestFocus();
}
}
@Override
protected void onCancelled() {
mAuthTask = null;
showProgress(false);
}
}
我需要该方法根据用户是否成功登录来返回真或假。但是,该flag值在方法内不会改变onFailure。