这篇东西拖了一个多月才动手写,其实已经学得更加深入了,不过作为学习记录,还是将它贴出来。
功能方面是一个很简单的下载模块,打开应用先下载json文件,通过json中的图片地址去下载图片,最终显示在ListView上。
下面是一个做此模块时写的一个思维导图
图片已经蛮详细的了,那时第一次练ListView+AsynTask,做起来还是费了一些功夫的。
现在对于这两块已经练得很多,做起来也都熟练很多。
一个可以优化的地方是需要考虑到图片和Json文件都是从服务器来的,可能会发生各种意想不到的问题,如遇到问题时,需要给用户个提示,并跳出异步子线程
1 public static String getStringFromHttp(String urlAddr) 2 { 3 InputStream is = null; 4 ByteArrayBuffer byteArrayBuffer = new ByteArrayBuffer(1); 5 try 6 { 7 URL url = new URL(urlAddr); 8 HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 9 if (conn.getResponseCode() != HttpURLConnection.HTTP_OK) 10 { 11 //连接服务器有异常,给用户提示 12 return null; 13 } 14 is = conn.getInputStream(); 15 int len = 0; 16 byte[] buffer = new byte[1024]; 17 while ((len = is.read(buffer)) != -1) 18 { 19 byteArrayBuffer.append(buffer, 0, len); 20 } 21 } 22 catch (MalformedURLException e) 23 { 24 e.printStackTrace(); 25 } 26 catch (IOException e) 27 { 28 e.printStackTrace(); 29 } 30 finally 31 { 32 if (is != null) 33 { 34 try 35 { 36 is.close(); 37 } 38 catch (IOException e) 39 { 40 e.printStackTrace(); 41 } 42 } 43 } 44 return new String(byteArrayBuffer.toByteArray()); 45 }
这个是已经封装后的获取String的异步加载任务的doInBackground方法。
去判断是否有成功连接服务器。
原文:http://www.cnblogs.com/To-Be-Better/p/3629310.html