URL を取得するための Bolts タスクの実装を作成しました。
public class UrlFetcher {
private static final String LOG_TAG = "UrlFetcher";
public static Task<byte[]> getUrl(String url) {
final TaskCompletionSource<byte[]> tcs = new TaskCompletionSource<>();
try {
tcs.setResult(downloadUrl(url));
} catch (IOException e) {
tcs.setError(e);
}
return tcs.getTask();
}
private static byte[] downloadUrl(String myurl) throws IOException {
InputStream is = null;
try {
URL url = new URL(myurl);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setReadTimeout(10000 /* milliseconds */);
conn.setConnectTimeout(15000 /* milliseconds */);
conn.setRequestMethod("GET");
conn.setDoInput(true);
// Starts the query
conn.connect();
int response = conn.getResponseCode();
Log.d(LOG_TAG, "The response is: " + response);
is = conn.getInputStream();
byte[] bytes = IOUtils.toByteArray(is);
return bytes;
} finally {
if (is != null) {
is.close();
}
}
}
}
これは、実行する最初のタスクです。バックグラウンドエグゼキュータで実行するにはどうすればよいですか?
別のタスクが継続されている場合にのみ、エグゼキューターを指定できるようです。