【问题标题】:Cache all images via Android Universal Image Loader通过 Android 通用图像加载器缓存所有图像
【发布时间】:2014-01-14 05:21:54
【问题描述】:

我在我的项目中使用Android Universal Image Loader 库。

我实现了离线工作,但这个库仅在显示带有图像的视图之前才开始加载和缓存图像。在这种情况下,当我关闭互联网时,我会看到这个预加载的图像。

就我而言,我有一系列链接,我想下​​载并缓存它们。然后我将在离线模式下显示任何图像,不仅是显示和缓存的图像。

我可以强制 Universal Image Loader 下载链接列表中的所有图片吗?

【问题讨论】:

标签: android image caching universal-image-loader image-loading


【解决方案1】:

只缓存图片,调用这个:

//Cache image...
loader.loadImage(imagenUrl, new SimpleImageLoadingListener());

【讨论】:

    【解决方案2】:

    我在这个实现中使用了异步

    同时使用进度对话框

    像这样 进度=新 ProgressDialog(this);
    progress.setMessage("正在下载产品信息");

        progress.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
        progress.setIndeterminate(false);
        progress.setCancelable(true);
        progress.setCanceledOnTouchOutside(false);
        progress.setProgress(0);
        progress.show();
    
    
    
     /**
         * Dowload all images
         */
        int mProgressPer=0;
        class imagesloadAsync extends  AsyncTask<String, Void, String> {
            JSONArray all_prods_Available= new JSONArray();
            public imagesloadAsync(JSONArray all_prods) {
                this.all_prods_Available=all_prods;
            }
    
            @Override
            protected void onPreExecute() {
                super.onPreExecute();
    
            }
    
        @Override
        protected void onPostExecute(String s) {
            super.onPostExecute(s);
        }
    
        @Override
        protected void onProgressUpdate(Void... values) {
            super.onProgressUpdate(values);
            cdata.log("i", "Act_Splash onProgressUpdate", "onProgressUpdate values-> " + values);
        }
    
        @Override
        protected void onCancelled(String s) {
            super.onCancelled(s);
        }
    
        @Override
        protected void onCancelled() {
            super.onCancelled();
        }
    
        @SuppressLint("LongLogTag")
        @Override
        protected String doInBackground(String... params) {
            try {
    
                //fix new array with images exist only
            final JSONArray All_images= new JSONArray();
            for (int i=0;i<all_prods_Available.length();i++) {
                JSONObject jstemp = all_prods_Available.getJSONObject(i);
                    if (!jstemp.isNull("image") && !jstemp.getString("image").equals("")) {
                        All_images.put(jstemp);
                    }
                }
    
                progress.setProgress(All_images.length());
                mProgressPer=0;
                //START DOWNLOADING..
    
                for (int i=0;i<All_images.length();i++) {
                    JSONObject jstemp = All_images.getJSONObject(i);
                    final int finalI = i;
                    String imageURL=jstemp.getString("image");
                    Log.i("Act_Splash trying on image:","image treying->"+imageURL);
    
                    imageloader.loadImage(imageURL, new SimpleImageLoadingListener() {
    
                        @Override
                        public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
                            mProgressPer++;
                            progress.setProgress(mProgressPer);
    
                            if (mProgressPer == All_images.length()){
                                progress.dismiss();
                                startActivity(new Intent(Act_Splash.this, Act_main.class));
                                finish();
                            }
    
                            Log.i("Act_Splash imageloader onLoadingComplete", "onLoadingComplete for imageUri->"+imageUri+ " and");
                        }
    
                        @Override
                        public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
    
                            mProgressPer++;
    
                            if (mProgressPer == All_images.length()){
                                progress.dismiss();
                                startActivity(new Intent(Act_Splash.this, Act_main.class));
                                finish();
                            }
    
                            progress.setProgress(mProgressPer);
    
                            Log.w("Act_Splash imageloader onLoadingFailed", "onLoadingFailed for imageUri->" + imageUri);
                        }
                    });
    
    
    
    
                }
    
    
    
    
            } catch (JSONException e) {
                e.printStackTrace();
            }
            return null;
        }
    }
    

    【讨论】:

    • 但有时进程会停止我还不明白.. :/
    猜你喜欢
    • 2014-10-14
    • 2013-05-02
    • 2023-03-18
    • 2016-12-15
    • 2016-02-29
    • 2015-06-20
    • 2015-04-02
    • 2017-04-07
    • 2013-12-17
    相关资源
    最近更新 更多