在我的Android应用程序中,我需要显示一个通过互联网检索的图像,在ImageView中,这是我的代码:
protected String doInBackground(String... thumbURLs) {
System.out.println("getting image");
try{
URL thumbURL = new URL(thumbURLs[0]);
System.out.println("looking picture "+ thumbURLs[0]);
URLConnection thumbConn = thumbURL.openConnection();
thumbConn.connect();
InputStream thumbIn = thumbConn.getInputStream();
BufferedInputStream thumbBuff = new BufferedInputStream(thumbIn);
itemImage .setImageBitmap(BitmapFactory.decodeStream(thumbBuff));
System.out.println("do you see the picture?");
thumbBuff.close();
thumbIn.close();
}
catch(Exception e) {
e.printStackTrace();
}
return null;
}
我没有收到任何错误,应用程序从服务器获取图像,但我没有看到它,我错过了什么?
答案 0 :(得分:3)
您无法在doInBackground
中执行UI任务。将图像设置为postExecute()
中的图像视图。
itemImage .setImageBitmap(BitmapFactory.decodeStream(thumbBuff));
将此行放在postExecute().
答案 1 :(得分:2)
UI更新部分应仅在Ui线程上完成。所以只需把
itemImage .setImageBitmap(bitmap);
在onPostExecute()
方法上。你必须从doInBackground
返回位图。
答案 2 :(得分:0)
还可以使用onProgressUpdate()回调API来更新doinBackground()内部的UI。
使用publishProgress()启动回调onProgressUpdate()