Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 预加载一组图像,并在所有图像完成后返回_Java_Android_Android Glide - Fatal编程技术网

Java 预加载一组图像,并在所有图像完成后返回

Java 预加载一组图像,并在所有图像完成后返回,java,android,android-glide,Java,Android,Android Glide,下面是一个相对简单的代码示例。基本上,我试图做的是预加载一些图像(因此是for循环)。预加载工作,但我不知道何时完成。我知道有听众,但我不确定他们是如何工作的 当for循环中的所有图像都已完全加载时,是否有一种仅从该方法返回的解决方案。这有意义吗 public void method(){ final Activity activity = getCurrentActivity(); activity.runOnUiThread(new Runnable() {

下面是一个相对简单的代码示例。基本上,我试图做的是预加载一些图像(因此是for循环)。预加载工作,但我不知道何时完成。我知道有听众,但我不确定他们是如何工作的

当for循环中的所有图像都已完全加载时,是否有一种仅从该方法返回的解决方案。这有意义吗

public void method(){
    final Activity activity = getCurrentActivity();
            activity.runOnUiThread(new Runnable() {

                @Override
                public void run() {
                    for (int i = 0; i < sources.size(); i++) {


                        final ReadableMap source = sources.getMap(i);
                        final GlideUrl glideUrl = FastImageViewConverter.glideUrl(source);
                        final Priority priority = FastImageViewConverter.priority(source);
                        Glide
                                .with(activity.getApplicationContext())
                                .load(glideUrl)
                                .priority(priority)
                                .placeholder(TRANSPARENT_DRAWABLE)
                                .diskCacheStrategy(DiskCacheStrategy.SOURCE)
                                .preload()
                                .listener(new RequestListener<Uri, GlideDrawable>() {
                                    @Override public boolean onException(Exception e, Uri model, Target<GlideDrawable> target, boolean isFirstResource) {
                                        return false;
                                    }
                                    @Override public boolean onResourceReady(GlideDrawable resource, Uri model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
                                        // easy
                                        return false;
                                        // impossible?
                                    }
                                });
                    }
                }
            });

}
public void方法(){
最终活动活动=getCurrentActivity();
activity.runOnUiThread(新的Runnable(){
@凌驾
公开募捐{
对于(int i=0;i
由于您知道要预加载多少图像,也许您可以设置一个计数器,然后在
onResourceReady
中增加此计数器。一旦达到要预加载的图像数量,您就完成了,您可以继续执行其他操作

因为您知道要预加载多少图像,也许您可以设置一个计数器,然后在
onResourceReady
中增加此计数器。一旦达到您想要预加载的图像数量,您就完成了,您可以继续执行其他内容

这不是最佳答案,但可能适合您的情况:)

public void方法(){
最终活动活动=getCurrentActivity();
activity.runOnUiThread(新的Runnable(){
@凌驾
公开募捐{
int counter=sources.size();
对于(int i=0;i
这不是最好的答案,但可能适合您的情况:)

public void方法(){
最终活动活动=getCurrentActivity();
activity.runOnUiThread(新的Runnable(){
@凌驾
公开募捐{
int counter=sources.size();
对于(int i=0;ipublic void method(){
    final Activity activity = getCurrentActivity();
            activity.runOnUiThread(new Runnable() {

                @Override
                public void run() {
                    int counter = sources.size();
                    for (int i = 0; i < sources.size(); i++) {


                        final ReadableMap source = sources.getMap(i);
                        final GlideUrl glideUrl = FastImageViewConverter.glideUrl(source);
                        final Priority priority = FastImageViewConverter.priority(source);
                        Glide
                                .with(activity.getApplicationContext())
                                .load(glideUrl)
                                .priority(priority)
                                .placeholder(TRANSPARENT_DRAWABLE)
                                .diskCacheStrategy(DiskCacheStrategy.SOURCE)
                                .preload()
                                .listener(new RequestListener<Uri, GlideDrawable>() {
                                    @Override public boolean onException(Exception e, Uri model, Target<GlideDrawable> target, boolean isFirstResource) {
                                        counter--;
                                        if counter == 0 {
                                            return your result here
                                        }
                                        return false;
                                    }
                                    @Override public boolean onResourceReady(GlideDrawable resource, Uri model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
                                        counter--;
                                        if counter == 0 {
                                            return your result here
                                        }
                                        return false;
                                        // impossible?
                                    }
                                });
                    }
                }
            });

}