2017-03-02 67 views
1

我正面临一些关于图像加载的问题。我使用图像加载器从服务器加载图像,但加载图像需要太多的时间延迟。 这是我的imageload代码:为什么从android中的服务器加载时需要花费太多时间延迟的图像?

初始化DisplayImageOptions。

options = new DisplayImageOptions.Builder().cacheInMemory(true) 
      .cacheOnDisc(true).resetViewBeforeLoading(true) 
      .showImageForEmptyUri(R.drawable.user_icon) 
      .showImageOnFail(R.drawable.user_icon) 
      .showImageOnLoading(R.drawable.loading).build(); 

并加载图像:

ImageLoader.getInstance().displayImage(base64Image, holder.profile_image, options); 
+0

嗯...你有缓慢的互联网?你缓存到磁盘?不清楚你想要什么答案。 –

+0

你正在加载的图片大小是多少? –

+0

感谢您的宝贵答案,但互联网速度是2-3 Mbps, –

回答

3

卸下方法resetVideBeforeLoading。检查我通常将采样:

// Create a public utility class 

public static ImageLoaderConfiguration getConfig(Context context) { 
    return new ImageLoaderConfiguration.Builder(context) 
      .memoryCacheExtraOptions(480, 800) 
      .diskCacheExtraOptions(480, 800, null) 
      .threadPriority(Thread.NORM_PRIORITY - 2) 
      .tasksProcessingOrder(QueueProcessingType.FIFO) 
      .denyCacheImageMultipleSizesInMemory() 
      .memoryCache(new LruMemoryCache(2 * 1024 * 1024)) 
      .memoryCacheSize(2 * 1024 * 1024) 
      .diskCache(new UnlimitedDiskCache(context.getCacheDir())) 
      .diskCacheSize(50 * 1024 * 1024) 
      .diskCacheFileCount(100) 
      .diskCacheFileNameGenerator(new HashCodeFileNameGenerator()) 
      .imageDownloader(new BaseImageDownloader(context)) 
      .defaultDisplayImageOptions(DisplayImageOptions.createSimple()) 
      .build(); 
} 

public static DisplayImageOptions getOptions() { 
    return new DisplayImageOptions.Builder() 
      .resetViewBeforeLoading(true) 
      .cacheInMemory(true) 
      .cacheOnDisk(true) 
      .considerExifParams(false) // Default 
      .imageScaleType(ImageScaleType.IN_SAMPLE_POWER_OF_2) // Default 
      .bitmapConfig(Bitmap.Config.ARGB_8888) // Default 
      .displayer(new SimpleBitmapDisplayer()) // Default 
      .handler(new Handler()) // Default 
      .build(); 
} 

,并使用:

ImageLoader.getInstance().init(Utils.getConfig(context)); 
ImageLoader.getInstance().displayImage(
    imageUrl, 
    mImageView, 
    Utils.getOptions(), new ImageLoadingListener() { 
     @Override 
     public void onLoadingStarted(String s, View view) { 
      // Show loader 
     } 

     @Override 
     public void onLoadingFailed(String s, View view, FailReason failReason) { 
      // Show error message 
     } 

     @Override 
     public void onLoadingComplete(String s, View view, Bitmap bitmap) { 

      // Hide loader 
     } 

     @Override 
     public void onLoadingCancelled(String s, View view) { 

     } 
    }); 
+0

“resetVideBeforeLoading”为我工作。谢谢哥们。 –

相关问题