AQuery(Android查询)如何实际加载图像



我目前正在使用Android查询库从服务器加载图像。

主探针:我想第一次存储图像,然后在我想从缓存加载图像之后。我在这里看到了使用memCachefileCache的缓存控制选项,但我不知道哪个更好地用于慢速互联网连接以及最低内存使用率

我可能有以下一些困惑的解决方案:

首先,我使用了这样的方法:(memCachefileCacheboth true

aq.id(holder.prodImage).image(holder.prodImagePath, true, true, 0, R.drawable.no_image, aq.getCachedImage(R.drawable.no_image), AQuery.FADE_IN);

但在这里,他说if image is huge, avoid memory caching

但我遇到了问题,因为网络速度慢,内存不足

然后在我尝试延迟图像加载后:

if(aq.shouldDelay(position, convertView, parent, holder.prodImagePath)){
    aq.id(holder.prodImage).image(R.drawable.no_image);
} else {
    aq.id(holder.prodImage).progress(view.findViewById(R.id.progressBar1)).image(holder.prodImagePath, false, true, 0, 0, null, AQuery.FADE_IN);
}

但它抛出的NullPointerException如下:

12-10 12:11:26.492: E/AndroidRuntime(23309): java.lang.NullPointerException
12-10 12:11:26.492: E/AndroidRuntime(23309):    at com.androidquery.util.Common.shouldDelay(Common.java:328)
12-10 12:11:26.492: E/AndroidRuntime(23309):    at com.androidquery.util.Common.shouldDelay(Common.java:340)
12-10 12:11:26.492: E/AndroidRuntime(23309):    at com.androidquery.AbstractAQuery.shouldDelay(AbstractAQuery.java:2389)
12-10 12:11:26.492: E/AndroidRuntime(23309):    at com.salesman.fragments.ProductFragment$MyGridViewAdapter.getView(ProductFragment.java:423)
12-10 12:11:26.492: E/AndroidRuntime(23309):    at android.widget.AbsListView.obtainView(AbsListView.java:2477)
12-10 12:11:26.492: E/AndroidRuntime(23309):    at android.widget.GridView.makeAndAddView(GridView.java:1331)
12-10 12:11:26.492: E/AndroidRuntime(23309):    at android.widget.GridView.makeRow(GridView.java:331)
12-10 12:11:26.492: E/AndroidRuntime(23309):    at android.widget.GridView.fillDown(GridView.java:283)
12-10 12:11:26.492: E/AndroidRuntime(23309):    at android.widget.GridView.fillGap(GridView.java:243)
12-10 12:11:26.492: E/AndroidRuntime(23309):    at android.widget.AbsListView.trackMotionScroll(AbsListView.java:5549)
12-10 12:11:26.492: E/AndroidRuntime(23309):    at android.widget.AbsListView$FlingRunnable.run(AbsListView.java:4693)

我能做什么以及我如何使用这个库来解决这个简单的问题

请给我解决方案。

非常感谢您的帮助。

最终得到了以下代码的解决方案:

/* Settings of Image */
//set the max number of concurrent network connections, default is 4
AjaxCallback.setNetworkLimit(8);
//set the max number of icons (image width <= 50) to be cached in memory, default is 20
BitmapAjaxCallback.setIconCacheLimit(50);
//set the max number of images (image width > 50) to be cached in memory, default is 20
BitmapAjaxCallback.setCacheLimit(50);
aq = new AQuery(context);
/* Getting Images from Server and stored in cache */
aq.id(holder.prodImageView).progress(convertView.findViewById(R.id.progressBar1)).image(holder.prodImagePath, true, true, 0, R.drawable.no_image, null, AQuery.FADE_IN);

如果你没有遇到任何问题,请在这里发表评论。

谢谢。

最新更新