0
私はAndroidデバイス用のスレッドでこのコードを実行しています。最初は十分でしたが、HTTP POSTの後に結果を返すように要求を変更しました。 "POST"関数は別のクラスにありますので、以下のコードは機能しません。このコードを変更してスレッド操作の結果を受け取る方法は?
私は、RunnableFutureが結果を返すために結果を抽出できることを読んでいます。誰かがこのコードを変更する方法を教えてくれますか?
public ArrayList<String> addfood(final String status, final String spaceId) {
Log.d(TAG, "Add Food");
final ArrayList<String> results = new ArrayList<>();
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
try {
String cookie = android.webkit.CookieManager.getInstance().getCookie(sURL);
Uri.Builder builder = new Uri.Builder()
.appendQueryParameter(“status”,status)
.appendQueryParameter("cookie", cookie)
.appendQueryParameter("space", spaceId);
String addresult = foodpost(POST(url, builder));
results.add(addresult);
} catch (Exception e) {
e.printStackTrace();
}
}
});
thread.start();
return results;
}
おそらく最良の解決策ではなく、回避策である可能性があります。 HTTP POST結果を格納するグローバル変数を作成しようとしましたか?必要なクラスでは、グローバル変数が特定のタイムアウト値までヌルでなくなるまで待つことができます。 –