1.必须要开子线程来操作耗时操作,android.os.NetworkOnMainThreadException

  1. new Thread(new Runnable() {
  2.  
  3. @Override
  4. public void run() {
  5. // TODO Auto-generated method stub
  6. try {
  7. updateFile = Environment.getExternalStorageDirectory()
  8. + "/3530.jpg";
  9. //downloadUpdateFile("http://image.anzimall.com/3530/3530_K21D_app_V2.3_2015050528.bin", updateFile);
  10. downloadUpdateFile("http://img1.cache.netease.com/catchpic/F/FC/FCC085159B92C5EE4FDDB9618166051E.jpg", updateFile);
  11. } catch (Exception e) {
  12. // TODO Auto-generated catch block
  13. e.printStackTrace(); //android.os.NetworkOnMainThreadException
  14. System.out.println(e.toString()+"");
  15. }
  16. }
  17. }).start();

2.抛出异常之后一定要打印异常,看看异常的具体信息。System.out.println(e.toString()+"");

  1.  
  1. public static long downloadUpdateFile(String down_url, String file)
  2. throws Exception {
  3.  
  4. int downloadCount = 0;// 已经下载好的大小
  5.  
  6. InputStream inputStream;
  7. OutputStream outputStream;
  8. URL url = new URL(down_url);
  9. HttpURLConnection httpurlconnection = (HttpURLConnection) url
  10. .openConnection();
  11. httpurlconnection.setConnectTimeout(5000);
  12. httpurlconnection.setReadTimeout(5000);
  13. // 获取下载文件的size
  14. //totalSize = httpURLConnection.getContentLength();
  15.  
  16. if (httpurlconnection.getResponseCode() == 404) {
  17. throw new Exception("fail!");
  18. // 这个地方应该加一个下载失败的处理,但是,因为我们在外面加了一个try---catch,已经处理了Exception,
  19. // 所以不用处理
  20. }
  21.  
  22. inputStream = httpurlconnection.getInputStream();
  23. File file_ok = new File(file);
  24. outputStream = new FileOutputStream(file_ok);// 文件存在则覆盖掉
  25.  
  26. byte buffer[] = new byte[1024];
  27. int readsize = 0;
  28.  
  29. while ((readsize = inputStream.read(buffer)) != -1) {
  30. outputStream.write(buffer, 0, readsize);
  31. downloadCount += readsize;// 时时获取下载到的大小
  32. }
  33. if (httpurlconnection != null) {
  34. httpurlconnection.disconnect();
  35. }
  36. inputStream.close();
  37. outputStream.close();
  38.  
  39. return downloadCount;
  40. }

  

主线程中一定不能放耗时操作,必须要开子线程,比如下载文件,不然会不让你拿到输入流--报错显示android.os.NetworkOnMainThreadException的更多相关文章

  1. android4.0以上访问网络不能在主线程中进行以及在线程中操作UI的解决方法

    MONO 调用一个线程操作UI 然后报Only the original thread that created a view hierarchy can touch its views.错误 goo ...

  2. 用Handler的post()方法来传递线程中的代码段到主线程中执行

    自定义的线程中是不能更新UI的,但是如果遇到更新UI的事情,我们可以用handler的post()方法来将更新UI的方法体,直接传送到主线程中,这样就能直接更新UI了.Handler的post()方法 ...

  3. 主线程中也不绝对安全的 UI 操作

    从最初开始学习 iOS 的时候,我们就被告知 UI 操作一定要放在主线程进行.这是因为 UIKit 的方法不是线程安全的,保证线程安全需要极大的开销.那么问题来了,在主线程中进行 UI 操作一定是安全 ...

  4. 在非主线程中更新UI

    在非主线程中调用了showMessage方法,结果报错:Can't create handler inside thread that has not called Looper.prepare() ...

  5. 主线程中的Looper.loop()为什么不会造成ANR

    引子: 正如我们所知,在android中如果主线程中进行耗时操作会引发ANR(Application Not Responding)异常. 造成ANR的原因一般有两种: 当前的事件没有机会得到处理(即 ...

  6. 解决Android3.0之后不能在主线程中进行HTTP请求

    感谢大佬:https://www.cnblogs.com/falzy/p/5763848.html 在Android3.0以后,会发现,只要是写在主线程(就是Activity)中的HTTP请求,运行时 ...

  7. Linux 下子线程 exit code 在主线程中的使用

    Linux线程函数原型是这样的: void* thread_fun(void* arg) 它的返回值是 空类型指针,入口参数也是 空类型指针.那么线程的 exit code 也应该是 void * 类 ...

  8. [原]unity中WWW isDone方法只能在主线程中调用

    项目中要使用动态加载,原计划是生成WWW对象后,放到一个容器里.由一个独立线程轮询容器里的对象,如果www.isDone为true时,回调一个接口把结果交给请求方. new Thread( new T ...

  9. 在主线程中慎用WaitForSingleObject (WaitForMultipleObjects)

    下面的代码我调试了将近一个星期,你能够看出什么地方出了问题吗?线程函数: DWORD WINAPI ThreadProc(    while(!bTerminate)    {        // 从 ...

随机推荐

  1. Android相机开发那些坑

    版权声明:本文由王梓原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/168 来源:腾云阁 https://www.qclou ...

  2. Mybatis学习(壹)

    一.Mybatis的引言 1.Mybatis框架概念:是数据库持久层的框架,对数据库的访问和操作.Mybatis对JDBC的封装,Mybatis替换JDBC开发,解决DAO中的通用问题. 2.JDBC ...

  3. Nodejs开发框架Express3.0开发手记–从零开始

    转载请注明出处: http://blog.fens.me/nodejs-express3/ 程序代码已经上传到github有需要的同学,自行下载. https://github.com/bsspiri ...

  4. wiki-editor语法

    1.==标题== 2.::换行缩进 3.[[文件:example.png]] 图片 4.** 名字|名字 链接

  5. 初学java之JFrame窗口模式

    package project; import javax.swing.*; import java.awt.*; public class test { public static void mai ...

  6. CSS 层叠及样式表来源

    Web标准化运动的口号——分离.分离.分离. 在2003年的 SXSW 会议中, Steve Champeon 和 Nick Finck 做了一个名为“面向未来的全方位 Web 设计”的演讲,揭示了这 ...

  7. 记一次web项目总结

    功能需求,登录,用户管理,新闻管理. 用户管理: // 分页查询所有用户信息 public List<User> userInfo(int index, int pageSize) thr ...

  8. Oracle知识整理

    1.自带三种登录方式: Scott/tiger   sys/manager   system/manager 2.基本的操作 1)  建数据库 create tablespace 表空间的名称 dat ...

  9. Zookeeper注册节点的掉线自动重新注册及测试方法

    转载:http://www.codelast.com/ 在一套分布式的online services系统中,各service通常不会放在一台服务器上,而是通过Zookeeper这样的东西,将自己的se ...

  10. 随机分类器的ROC和Precision-recall曲线

    随机分类器,也就是对于一个分类问题,随机猜测答案.理论上,随机分类器的性能是所有分类器的下界.对随机分类器的理解,可以帮助更好的理解分类器的性能指标.随机分类器的性能也可以作为评价分类器的一个基础.所 ...