2016-09-21 6 views
0

グローバル変数の更新に関する問題がsetメソッドによって発生しています。短いの状況は次のとおりです。volley androidでの同期要求

  • その後、私の設定setメソッド内で、(ログイン)現在のユーザーセッションに関する情報を格納する(SessionHandlerは、このクラスの名前です)クラスを使用しますユーザーがログインしている場合はブール値をtrueに、それ以外の場合はfalseにします。変数はFALSEに初期化されます。

  • ライブラリを使用してFacebook、Googleプラス、パーソナライズドログインでログインロジックを実装します。このクラスには、ログインが成功したかどうかに基づいてブール値を返すメソッド(customSignin)があります。

     @Override   
        public boolean customSignin(SmartUser smartUser) { 
    
        params = new ArrayList<>(); 
        params.add(smartUser.getUsername()); 
        params.add(smartUser.getPassword()); 
    
        StringRequest strReq = new LoginStringRequest().getStringRequest(params); 
        AppController.getInstance().addToRequestQueue(strReq); 
    
    
        if(SessionHandler.logged){ 
         return true; 
        } else { 
         return false; 
        } 
    
    } 
    

そしてTRUE =ユーザログイン、FALSE =ユーザにログインしていない。ユーザーがデータベースに存在する場合は明らかに、値がtrueに設定されなければなりません。 投稿されたコードからわかるように、問題があります: このメソッド内では、入力された値(ユーザー名、パスワード)が正しいことをチェックする別のクラスを呼び出し、データベース、これは、ライブラリVolleyを使用するには、問題は、VolleyのonResponseメソッド内の非同期タスクである場合、データが真のセプタムであることをTRUEに設定メソッドを介してブール変数LOGGEDの値です。 ログイン情報が正しい場合でも常にFALSEに設定されているブール変数の値を確認するには、後で最初のメソッド(customSignin)が必要です。 (その後、IFから始まるBooleanをチェックします)。 これがボレークラスのコードです:今、誰もが、私はこの問題を解決することができますどのように私に言うことができるならば、あなたは状況を解決するために、同期タスクを使用して避けることができる不思議

Code of Volley request

?特に、ユーザーがデータベースに存在し、その後customSigninメソッドで実行を続けると、バレーボールを介してtrueに設定されます。

ご迷惑をおかけして申し訳ありませんが、私を助ける方法を知っている人のおかげで、残念ながら翻訳者を使用します。

答えて

0

@Applefriend私が理解したところでは、CustomSignInメソッド内のコードは、要求が完了した後にセッション情報を設定するvolleyを使用してネットワークを非同期に呼び出します。だから、

それがユーザーのログイン機能ですので、あなたが非同期的にそれをしたいですか、なぜ、

AppController.getInstance().addToRequestQueue(strReq); // Dispatch async call 

if(SessionHandler.logged){ // This happens in the current UI thread (which be returning the default value or an exception 
    return true; 
} else { 
    return false; 
} 

を言うの?より良い方法は: 不確定進行ダイアログを表示し、呼び出しを同期させて値を返す。

私の理解が間違っている場合は、私を修正してください。

+0

私はあなたの考えを使用して値を返すために同期要求を使用しました。しかし、私は、ボレーとFutureRequestを使用し、結果としてTimeoutExceptionを持っていた。 – Applefriend

+0

これは、同期要求[リンク](http://s13.postimg.org/4n6573xw7/Schermata_2016_09_22_alle_21_24_00.png)を実装する方法です。 – Applefriend

関連する問題