0
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

4

1 回答 1

1

检查登录失败时是否引发以下任何异常。 从文件来看,

void onFailure(java.lang.Throwable caught)

当异步调用无法正常完成时调用。服务方法抛出的 IncompatibleRemoteServiceExceptions、InvocationExceptions 或检查异常是可以传递给此方法的故障类型的示例。如果捕获的是 IncompatibleRemoteServiceException 的实例,则应用程序应尝试进入可以安全完成浏览器刷新的状态。

参数:catch - 执行远程过程调用时遇到的故障

于 2016-02-17T22:18:39.467 回答