问题1:是否可以在不提供ImageView参考的情况下下载图像文件?
问题2:我可以在aQuery的单独实例中下载每个文件,还是必须按顺序下载文件?例如,等待当前文件下载的回调,然后触发下一个文件下载调用?以下是我的代码
//广告是我的自定义模型类
// adList是我的广告列表,其中包含指向某处托管的广告的网址
// imageView是一个不可见的imageView,如果我不提供任何imageView资源的任何引用,则下载无法启动
for (String adUrl : adList) {
if (adUrl.length() > 0) {
AQuery aQuery = new AQuery(DownloadAdActivity.this);
BitmapAjaxCallback callback = new BitmapAjaxCallback();
callBack.url(adUrl);
callBack.fallback(R.id.placeHolderResource);
callBack.fileCache(true);
callBack.memCache(true);
aQuery.id(imageView).image(callBack);
}
}
我需要在应用程序第一次启动时下载20/30图像,到目前为止,我通过提供隐藏的imageView参考并在每个图像下载后按顺序触发aQuery来完成此操作。我尝试在循环中生成20/30请求,但只有最后一个aQuery触发器调用可以取消之前的图像下载调用。
请指导我: 1-如何在不提供imageView参考的情况下缓存图像 2-如何以并行方式下载图像,而不是通过AQuery以顺序方式下载。
答案 0 :(得分:2)
1)您可以使用不带ImageView参考的ajax调用来下载图像。
androidQuery.ajax("url", Bitmap.class, 0, new AjaxCallback<Bitmap>() {
@Override
public void callback(String url, Bitmap bitmap, AjaxStatus status) {
super.callback(url, bitmap, status);
}
});
2)默认情况下,您可以同时下载4张图像。但您可以根据自己的要求进行更改
AjaxCallback.setNetworkLimit(8);
答案 1 :(得分:0)
您可以使用Picasso 它将进行所有下载以及图像的缓存。
无论如何,如果图像非常小,你应该准备一个“zip”文件,并使用AsyncTask / Thread将它们全部解压缩并解压缩。打开和关闭与服务器的连接是非常耗时的“非常昂贵”的操作。
答案 2 :(得分:0)
以下是使用AQuery从url获取位图的方法 static Bitmap myBitmap = null;
public static Bitmap getBitmapFromURL(String src) {
try {
Log.i(TAG, "Image Url is : " + src);
AQuery androidQuery = new AQuery(ChatApplication.getInstance());
androidQuery.ajax(src, Bitmap.class, 0, new AjaxCallback<Bitmap>() {
@Override
public void callback(String url, Bitmap bitmap, AjaxStatus status) {
super.callback(url, bitmap, status);
if (bitmap != null)
myBitmap = bitmap;
}
});
} catch (Exception e) {
Log.i(TAG, "Error due to " + e);
}
return myBitmap;
}
答案 3 :(得分:0)
AQuery aq = new AQuery(context);
aq.ajax(url_of_image, Bitmap.class, new AjaxCallback<Bitmap>() {
@Override
public void callback(String url, Bitmap object, AjaxStatus status) {
}
});
我很抱歉回复很晚,但这是我见过的最好的图书馆。
是的,你可以下载。位图对象将为您提供图像。
如果您想在下载完成后下载或传递每个URL,可以创建多个Aquery实例,您可以使用任何循环。