2017-07-27 4 views
1

私は様々なウェブサイトへのネットワークコールを行い、必要なコンテンツを返すアンドロイドライブラリを作成しました。私はonResponseonFailureのようなコールバックを持つVolleyライブラリを使用しています。当初、このライブラリはアプリであり、後でライブラリに変更されました。私のライブラリーのコールバックを処理します

アプリだったときは、コールバックを簡単に処理できました。コールバックが発生するたびに必要な関数が呼び出されますが、ライブラリとしてインポートしてそれを使用しようとすると、コールバックが何もしないとすぐにライブラリからコントロールが返されます。

このコードがフラグ値を返す代わりにアプリの一部だったとき、私は結果を処理する適切な関数を呼び出しました。これらの関数を呼び出すたびに、コールバックが完了する前にフラグの値が返され、これが問題を引き起こしています。

私の質問は、このライブラリを使用するアプリケーションにネットワークコールが完了したときに通知されるように、コールバックの周りでこれをワープする方法です。

答えて

3

あなたはあなたのライブラリーのための独自のコールバック(複数可)を追加することができ

interface YourCallback<T> { 
    onResponse(T value); 
} 

public void sendForVerification(final String Response,final String Secret,final String Name, YourCallback<Boolean> callback){ 

    StringRequest stringRequest = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() { 
     @Override 
     public void onResponse(String response) { 
      callback.onResponse(true); 
     }, new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 
      callback.onResponse(false); 
     } 
    }){ 
     @Override 
     protected Map<String, String> getParams() throws AuthFailureError { 
      HashMap<String,String> params = new HashMap<>(); 
      params.put("secret",Secret); 
      params.put("response",Response); 
      return params; 
     } 
    }; 
    requestQueue.add(stringRequest); 
} 

boolean flag; 

api.sendForVerification("", "", "", new YourCallback<Boolean>() { 
    @Override 
    public void onResponse(Boolean value) { 
     flag = value; 
    } 
}); 
+0

これは 'Volley'ライブラリではうまくいくと思いますが、私は呼び出しを行う他のGoogle APIも持っています。私はそれのために何をすべきですか?ライブラリに作成して、必要なときにいつでも呼び出すことができる汎用コールバックはありますか? – Tyson

+0

その代わり –

+0

とうん、ちょうど更新答え、私はそれをしようとします... – Tyson

0

必要になります要求を送信した後、バレーボールはasynchronusので、他の今後のプロセスであり、応答を待たずに通常通り続ける。あなたのフラグの値は変更されていないように見えます。要求がまだ応答を待っている間に、おそらくアクセスしようとしているからです。これがコールバック実装の理由です。応答を取得するとすぐに特定のアクションを実行し、変更前に返されるため、別のメソッドから返される値を処理しないでください。

+0

うん。私は@ cricket_007の答えの後に、私は自分のコールバックを実装して動作させることができたのです。 – Tyson

関連する問題