从URL加载图像 - Java

时间:2015-08-29 18:39:27

标签: java android image

我正在尝试从我的ASYNC任务中发出GET请求的handelResponse中的网址加载图片,并在handelResponse我有这个

 InputStream is = (InputStream) new URL(homeScreenPicUrl).getContent();
 b = BitmapFactory.decodeStream(is);

但我的ASYNC任务似乎有问题,因为我得到W/System.err﹕ android.os.NetworkOnMainThreadException如何在hadelResponse中加载图像,理想情况下我想同步加载它,因为我想等待它在移动到下一个屏幕之前加载。

由于这一切都发生在启动画面上,我只是在等待图片移动到主页面之前。

由于

1 个答案:

答案 0 :(得分:2)

这是因为InputStream只是一个处理程序:当你从它read()(这是BitmapFactory所做的)你实际上从网络中获取数据时,Android禁止它因为你正在减慢系统速度。

您在后台线程中解码流并将AsyncTask的返回类型更改为Bitmap,或者将流的内容存储在byte[]中并使用{ {1}}在UI线程中构建图像。这两种解决方案都是等效的,因为您在后台线程中使用流并将其内容存储在内存中。

byte[]