[解決済み] volleyで同期リクエストはできますか?
2022-06-02 09:27:30
質問
すでにバックグラウンドスレッドを持っているサービスにいると想像してください。コールバックが同期的に行われるように、その同じスレッドでvolleyを使用してリクエストを行うことはできますか?
これには2つの理由があります。
- まず、別のスレッドは必要なく、それを作成するのは無駄です。
- 次に、ServiceIntent 内にいる場合、コールバックの前にスレッドの実行が終了してしまうので、Volley からの応答がありません。自前でServiceを作り、そのServiceのスレッドをランループで制御することは可能ですが、Volleyにこの機能があれば望ましいと思います。
どのように解決するのでしょうか?
ボレーで可能なようです。
RequestFuture
クラスで可能なようです。例えば、JSONのHTTP GETリクエストを同期して作るには、以下のようにします。
RequestFuture<JSONObject> future = RequestFuture.newFuture();
JsonObjectRequest request = new JsonObjectRequest(URL, new JSONObject(), future, future);
requestQueue.add(request);
try {
JSONObject response = future.get(); // this will block
} catch (InterruptedException e) {
// exception handling
} catch (ExecutionException e) {
// exception handling
}
関連
-
javaでクラスを作成すると、enclosing classでないように見える
-
SocketTimeoutExceptionの解決方法です。読み込みがタイムアウトした
-
このラインで複数のマーカーを解決する方法
-
Google Chromeのエラー「Not allowed to load local resource」の解決策について
-
[解決済み] android.os.NetworkOnMainThreadException' を修正するにはどうすればよいですか?
-
[解決済み] Javaでメモリーリークを発生させるにはどうしたらいいですか?
-
[解決済み] インスタンス状態の保存を使用してアクティビティ状態を保存するにはどうすればよいですか?
-
[解決済み] Mavenを使用して、依存関係を持つ実行可能なJARを作成するにはどうすればよいですか?
-
[解決済み] スタックトレースを文字列に変換するにはどうすればよいですか?
-
[解決済み】JSP 2を使用して、JSPファイル内のJavaコードを回避するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
スタイルシートとして解釈されるリソースが、MIMEタイプtext/htmlで転送される。
-
ファインバグタイプ
-
アクセス制限について アプリケーションの種類がAPIでない(必要なライブラリの制限)。
-
jd-gui Java Exceptionが発生しました。
-
Dateが型に解決できない問題を解決する
-
Eclipseで "XXXX "の解決策を(型に)解決することができない
-
Spring boot runs with Error creating bean with name 'entityManagerFactory' defined in class path resource
-
マスキング このリソースにアクセスするには、完全な認証が必要です。
-
[オリジナル】java学習ノート【II】よくあるエラー クラスパス上のクラスファイルが見つからない、またはアクセスできない場合
-
org.glassfish.jersey.servlet.ServletContainer