標籤:des android http io os java for sp on
============問題描述============
我用下面的代碼從伺服器端下載了圖片,運行在新開的線程中
System.out.println("before bm = " + bm);String imageUrl1 = "http://10.0.2.2:8080/BBStuServlet/test01_upload_1.jpg";bm = NetTool.downlodBitmap(imageUrl1);map2.put("image", bm);System.out.println("after bm = " + bm);
logcat裡有輸出: before bm=null 和 after bm = [email protected]
然後我就在主線程裡給image設定Bitmap
image.setImageBitmap(bm);
downloadBitmap()方法如下:
/* * 從指定url下載圖片 */public static Bitmap downlodBitmap(String url) {URL myFileUrl = null;Bitmap bitmap = null;try {myFileUrl = new URL(url);} catch (MalformedURLException e) {// TODO Auto-generated catch blocke.printStackTrace();}try {HttpURLConnection conn = (HttpURLConnection) myFileUrl.openConnection();conn.setDoInput(true);conn.connect();InputStream is = conn.getInputStream();bitmap = BitmapFactory.decodeStream(is);is.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}
可是image並沒有顯示出來該bitmap,這是為什麼。明明已經顯示下載好了,圖片在135K,也不大啊。怎麼回事,糾結一天了。
============解決方案1============
因為你執行image.setImageBitmap(bm);時圖片並沒有下載好,你應該在下載好後給主線程發訊息,通知主線程顯示圖片。
============解決方案2============
用handler更新主線程圖片,或者用asynctask這個非同步下載圖片
Android下載圖片顯示問題