主线程中一定不能放耗时操作,必须要开子线程,比如下载文件,不然会不让你拿到输入流--报错显示android.os.NetworkOnMainThreadException
2015-07-21 16:03
531 查看
1.必须要开子线程来操作耗时操作,android.os.NetworkOnMainThreadException
2.抛出异常之后一定要打印异常,看看异常的具体信息。System.out.println(e.toString()+"");
new Thread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub try { updateFile = Environment.getExternalStorageDirectory() + "/3530.jpg"; //downloadUpdateFile("http://image.anzimall.com/3530/3530_K21D_app_V2.3_2015050528.bin", updateFile); downloadUpdateFile("http://img1.cache.netease.com/catchpic/F/FC/FCC085159B92C5EE4FDDB9618166051E.jpg", updateFile); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); //android.os.NetworkOnMainThreadException System.out.println(e.toString()+""); } } }).start();
2.抛出异常之后一定要打印异常,看看异常的具体信息。System.out.println(e.toString()+"");
public static long downloadUpdateFile(String down_url, String file) throws Exception { int downloadCount = 0;// 已经下载好的大小 InputStream inputStream; OutputStream outputStream; URL url = new URL(down_url); HttpURLConnection httpurlconnection = (HttpURLConnection) url .openConnection(); httpurlconnection.setConnectTimeout(5000); httpurlconnection.setReadTimeout(5000); // 获取下载文件的size //totalSize = httpURLConnection.getContentLength(); if (httpurlconnection.getResponseCode() == 404) { throw new Exception("fail!"); // 这个地方应该加一个下载失败的处理,但是,因为我们在外面加了一个try---catch,已经处理了Exception, // 所以不用处理 } inputStream = httpurlconnection.getInputStream(); File file_ok = new File(file); outputStream = new FileOutputStream(file_ok);// 文件存在则覆盖掉 byte buffer[] = new byte[1024]; int readsize = 0; while ((readsize = inputStream.read(buffer)) != -1) { outputStream.write(buffer, 0, readsize); downloadCount += readsize;// 时时获取下载到的大小 } if (httpurlconnection != null) { httpurlconnection.disconnect(); } inputStream.close(); outputStream.close(); return downloadCount; }
相关文章推荐
- GitHub上史上最全的Android开源项目分类汇总
- Android Intent 其中一个分析
- android中Interpolator的方法详细
- Android Monkey Test
- Android中的Sqlite中的onCreate方法和onUpgrade方法的执行时机
- android里TextView加下划线
- Android IntentService的使用和源码分析
- Android如何获得系统(system)权限
- android中file的保存
- 【转】Android应用程序的数据存放目录解说
- android textview 下划线
- Android:Activity+Fragment及它们之间的数据交换
- android中6个EditText输入验证码(仿支付宝支付输入密码框)
- Android selector标签下的几种状态解读
- android中使用startActivityForResult回传数据
- Android PullToRefresh (ListView GridView 下拉刷新) 使用详解
- android开发动画总结一(tweened animation)
- Android拍照、摄像方向旋转的问题 代码详解
- Android 四大组件学习之Service二
- Android在 Alertdialog对话框中点击消失?