0

问题1:是否可以在不引用ImageView的情况下下载图像文件?

问题 2:我可以在 aQuery 的单独实例中下载每个文件还是必须按顺序下载文件?例如,等待当前文件下载的回调,然后触发下一个文件下载调用?下面是我的代码

// 广告是我的自定义模型类

// adList 是我的广告列表,其中包含指向某处托管的广告的 URL

// 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 以顺序方式下载图像。

4

4 回答 4

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);
于 2014-10-22T05:33:35.950 回答
0

您可以使用Picasso 它将进行所有下载以及图像缓存。

无论如何,如果图像非常小,您应该准备一个“zip”文件并使用 AsyncTask / Thread 将它们全部解压并解压缩。打开和关闭与服务器的连接是耗时的“非常昂贵”的操作。

于 2014-10-22T05:08:13.750 回答
0

这是使用 AQuery static Bitmap myBitmap = null 从 url 获取位图的方法;

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;
}
于 2017-09-11T07:18:52.303 回答
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 实例,您可以使用任何循环。

于 2018-02-26T17:32:11.890 回答