2016-11-23 7 views
0

私はアンドロイドにStormpathフレームワークを使ってログイン画面をまとめようとしています。私はアンドロイドスタジオで提供されている標準のログイン画面を使用し、UserLoginTaskのみを変更しました。私の問題は、ストームパスへの電話が終わるのを待たずにいることです。クラスが呼び出されると直ちに、doInBackgroundを直接実行してから、onPostExecuteにまっすぐ進みます。ここに私のクラスには、次のとおりです。doInTheBackgroundは機能が終了するのを待っていませんか?

public class UserLoginTask extends AsyncTask<Void, Void, Boolean> { 

     private final String mEmail; 
     private final String mPassword; 
     private boolean loginResult; 
     String errorMessage; 


     UserLoginTask(String email, String password) { 
      mEmail = email; 
      mPassword = password; 
     } 

     @Override 
     protected Boolean doInBackground(Void... params) { 
      Stormpath.login(mEmail, mPassword, new StormpathCallback<Void>() { 
       @Override 
       public void onSuccess(Void aVoid) { 
        Log.d("debug", "sucess"); 
        loginResult = true; 
       } 

       @Override 
       public void onFailure(StormpathError error) { 
        errorMessage = error.message(); 
        Log.d("debug", "Error: " + error.message()); 
        loginResult = false; 
       } 
      }); 
      return loginResult; 
     } 

     @Override 
     protected void onPostExecute(final Boolean success) { 
      mAuthTask = null; 
      showProgress(false); 

      if (success) { 
       finish(); 
      } else { 
       Toast.makeText(LoginActivity.this, errorMessage, Toast.LENGTH_SHORT).show(); 
       mPasswordView.setError(getString(R.string.error_incorrect_password)); 
       mPasswordView.requestFocus(); 
      } 
     } 

     @Override 
     protected void onCancelled() { 
      mAuthTask = null; 
      showProgress(false); 
     } 
    } 
+4

'Stormpath.login()'はコールバックを使用しているので、すでにバックグラウンドスレッドでネットワーク呼び出しを行っているように見え、コールバック経由で結果を返します。これが真であれば、この場合には 'AsyncTask'は必要ありません。 – Egor

+0

なぜそれが待ちますか? 'login()'は非同期呼び出しであり、呼び出しスレッドをブロックしません。 – earthw0rmjim

+0

@Egorこれはありがとう、私は答えとしてそれを検証することができます –

答えて

1

Stormpath.login()は、コールバックを使用して最も可能性が高いことがすでにバックグラウンドスレッドでのネットワーク呼び出しをやっているし、コールバックを経由して、あなたに結果を返しますので。この場合、実際にはAsyncTaskは必要ありません。

関連する問題