Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/188.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 安卓镜像没有';t从图像URL显示到图像视图_Java_Android_Url_Imageview - Fatal编程技术网

Java 安卓镜像没有';t从图像URL显示到图像视图

Java 安卓镜像没有';t从图像URL显示到图像视图,java,android,url,imageview,Java,Android,Url,Imageview,我想从“/4GLKF4Q.jpg”向ImageView显示图像,但图像URL中的图像未显示到ImageView。我能做这个吗 异步任务 class DownloadImageTask extends AsyncTask<String, Void, byte[]> { ImageView bmImage; public DownloadImageTask(ImageView bmImage) { this.bmImage = bmImage;

我想从“/4GLKF4Q.jpg”向ImageView显示图像,但图像URL中的图像未显示到ImageView。我能做这个吗

异步任务

class DownloadImageTask extends AsyncTask<String, Void, byte[]> {
    ImageView bmImage;

    public DownloadImageTask(ImageView bmImage) {
        this.bmImage = bmImage;
    }

    protected byte[] doInBackground(String... urls) {
        try {
            URL url = new URL(urls[0]);
            InputStream is = (InputStream) url.getContent();
            byte[] buffer = new byte[8192];
            int bytesRead;
            ByteArrayOutputStream output = new ByteArrayOutputStream();
            while ((bytesRead = is.read(buffer)) != -1) {
                output.write(buffer, 0, bytesRead);
            }
            return output.toByteArray();
        } catch (MalformedURLException e) {
            e.printStackTrace();
            return null;
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }
    }

    protected void onPostExecute(byte[] result) {
        ByteArrayInputStream imageStream = new ByteArrayInputStream(result);
        Bitmap bm = BitmapFactory.decodeStream(imageStream);
        bmImage.setImageBitmap(bm);
    }
}
图像URL中的图像未显示到imageview。 在Logcat中:

09-23 10:26:49.410 10591-10591/com.*** D/skia: --- SkImageDecoder::Factory returned null

从评论更新:将图像服务器更改为另一个服务器可以解决此问题。我想这是一个I.imgur.com问题


你不应该使用你自己的图像加载器任务,它会泄漏到某个地方。 有两个好的图书馆: -(来自Facebook) -(来自Square up)

还有UniversalImageLoader(UIL)

  • 我建议您通过Facebook签出图像管理库,与其他图像加载库相比,这是非常棒和成熟的

  • Fresco采用三层体系结构(位图内存缓存、
    编码内存缓存
    磁盘缓存
    )处理图像的所有缓存。它还减少了OOM(内存不足)问题。当视图中的图像离开屏幕时,它会自动回收位图,从而释放内存

  • 现在有一种方法可以从URL加载ImageView,而不是使用ImageView

    NetworkImageView构建在ImageLoader上,并在通过URL通过网络获取图像的情况下有效地替代ImageView。如果视图与层次结构分离,NetworkImageView还可以管理取消挂起的请求


    图像自动加载到后台线程中,视图在UI线程上更新。它甚至支持缓存

    我用过毕加索,结果是一样的。Logcat日志为D/skia:---SkImageDecoder::工厂返回null。当我使用不同的图像URL时,它起作用了服务器不工作。嗯,我想可能有人会认为这张图片有问题,试试Fresco,看看是否也有问题。如果是,这可能是您设备上的软件问题我使用了fresco和SimpleDraweView。Logcat日志是由以下原因引起的:java.lang.NullPointerException:SimpleDraweView未初始化!作为@TahaKörkem,如果您认为图像、服务器或设备上的软件解码器有问题,我会继续使用不同的图像服务器,它会正常工作。谢谢你的评论。更好的方法是向用户阿奎里或毕加索提问。这个问题已经被问了很多次了,但大多数答案都过时了。现代的方法是使用NetworkImageView,请参见下面我的答案。
    09-23 10:26:49.410 10591-10591/com.*** D/skia: --- SkImageDecoder::Factory returned null