我正在尝试从我的ASYNC任务中发出GET请求的handelResponse
中的网址加载图片,并在handelResponse
我有这个
InputStream is = (InputStream) new URL(homeScreenPicUrl).getContent();
b = BitmapFactory.decodeStream(is);
但我的ASYNC任务似乎有问题,因为我得到W/System.err﹕ android.os.NetworkOnMainThreadException
如何在hadelResponse
中加载图像,理想情况下我想同步加载它,因为我想等待它在移动到下一个屏幕之前加载。
由于这一切都发生在启动画面上,我只是在等待图片移动到主页面之前。
由于
答案 0 :(得分:2)
这是因为InputStream
只是一个处理程序:当你从它read()
(这是BitmapFactory
所做的)你实际上从网络中获取数据时,Android禁止它因为你正在减慢系统速度。
您在后台线程中解码流并将AsyncTask
的返回类型更改为Bitmap
,或者将流的内容存储在byte[]
中并使用{ {1}}在UI线程中构建图像。这两种解决方案都是等效的,因为您在后台线程中使用流并将其内容存储在内存中。
byte[]