Si vous suivez l'utilisation de l'échantillon Glide, il arrive avec La méthode() appartient à l'objet java.util.concurrent.Future. Et la définition de classe future est donnée par le document officiel comme ci-dessous.
public interface Future<V>
Un avenir représente le résultat d'un calcul asynchrone . Des méthodes sont fournies pour vérifier si le calcul est terminé, pour attendre son achèvement et pour récupérer le résultat du calcul. Le résultat ne peut être récupéré qu'à l'aide de la méthode lorsque le calcul est terminé, en bloquant si nécessaire jusqu'à ce qu'il soit prêt. L'annulation est effectuée par la méthode d'annulation. Des méthodes supplémentaires sont fournies pour déterminer si la tâche s'est terminée normalement ou a été annulée. Une fois le calcul terminé, le calcul ne peut pas être annulé. Si vous souhaitez utiliser un Avenir pour à des fins d'annulation mais sans fournir de résultat utilisable, vous pouvez déclarer les types du formulaire Future et renvoyer la valeur null à la suite de la tâche sous-jacente .
Exemple d'utilisation (Notez que les classes sont toutes maquillée.)
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; }
}
}
permet de voir ce qui se passe étape par étape:
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> {
}
Mais plus adéquate et sûre la solution est en utilisant le rappel
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
}
});
Consultez la [documentation pour Glide] (https://github.com/bumptech/glide/wiki). On dirait que vous devriez utiliser 'into()' pas 'get()'. – rundavidrun
Il semble que vous manquiez d'ajouter asBitmap() voir cette réponse https://stackoverflow.com/a/27394484/7134908 –