2016-02-17 3 views
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); 
     } 
    } 

Мне нужен метод для возврата true или false на основании того, был ли пользователь успешно зарегистрирован или нет. Однако значение flag не изменяется в пределах метода onFailure.Вход с использованием LoginActivity и Kinvey

ответ

1

Проверьте, не было ли исключено какое-либо из приведенных ниже исключений при неудачном входе в систему. From the document,

void onFailure(java.lang.Throwable caught) 

вызывается, когда асинхронный вызов не может завершаться нормально. Исключения, связанные с несовместимымиRemoteServiceExceptions, InvocationExceptions или проверенными исключениями, создаваемые методом службы, являются примерами типа сбоев, которые могут быть переданы этому методу. Если catch является экземпляром исключения IncompatibleRemoteServiceException, приложение должно попытаться войти в состояние, в котором можно безопасно выполнить обновление браузера.

Параметры: обнаружено - сбой при выполнении удаленного вызова процедуры

Смежные вопросы