グライドサンプルの使用方法に従うと、それはget ()メソッドはjava.util.concurrent.Futureオブジェクトに属します。そして将来のクラス定義は以下のように公式文書によって与えられる。
public interface Future<V>
将来は、 非同期計算の結果を表します。 の計算が完了したかどうかをチェックし、完了を待って計算の結果を で検索する方法が提供されています。結果は、計算が完了したら メソッドgetを使用して取得することができ、必要な場合はブロックして、準備ができるまで になります。キャンセルはキャンセル方法で行います。 タスクが を正常終了したかキャンセルしたかを判断するための追加の方法が提供されています。計算が完了すると、 の計算をキャンセルすることはできません。 のFuture for cancellabilityを使用したいが、使用可能な結果が得られない場合は、 のタイプのFutureを宣言し、 の基本タスクの結果としてnullを返すことができます。
使用例は、(。次のクラスはすべて作らアップされていることに注意してください)
interface ArchiveSearcher { String search(String target); }
class App {
ExecutorService executor = ...
ArchiveSearcher searcher = ...
void showSearch(final String target)
throws InterruptedException {
Future<String> future
= executor.submit(new Callable<String>() {
public String call() {
return searcher.search(target);
}});
displayOtherThings(); // do other things while searching
try {
displayText(future.get()); // use future
} catch (ExecutionException ex) { cleanup(); return; }
}
}
ステップごとに何が起こるか見てみましょう:
Bitmap theBitmap = Glide.
with(this). //in Glide class and returns RequestManager
load(image_url). // in RequestManager and returns RequestBuilder<Drawable>
asBitmap(). //in RequestBuilder and returns RequestBuilder<Bitmap>
submit(). // in RequestBuilder and returns FutureTarget<TranscodeType> which extends Future<>
get(); // this belongs to Future object which is the result of async computation
public static RequestManager with(Context context) {
return getRetriever(context).get(context);
}
public RequestBuilder<Drawable> load(@Nullable Object model) {
return asDrawable().load(model);
}
public RequestBuilder<Bitmap> asBitmap() {
return as(Bitmap.class).transition(new GenericTransitionOptions<Bitmap>())
.apply(DECODE_TYPE_BITMAP);
}
public FutureTarget<TranscodeType> submit() {
return submit(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL);
}
public interface FutureTarget<R> extends Future<R>, Target<R> {
}
しかし、より適切かつ安全な解決策はコールバックを使用することです。
Glide
.with(this)
.load(image_url)
.asBitmap()
.into(new SimpleTarget<Bitmap>(100,100) {
@Override
public void onResourceReady(Bitmap resource, GlideAnimation glideAnimation) {
//resource is the resulting bitmap
}
});
[Glideのドキュメント](https://github.com/bumptech/glide/wiki)をご覧ください。 'get()'ではなく 'into()'を使用する必要があるようです。 – rundavidrun
あなたがasBitmap()を追加するために行方不明になっているようです。この回答を参照してください。https://stackoverflow.com/a/27394484/7134908 –