ImageView显示网络图片,避免NetworkOnMainThreadException错误
2015-11-30 00:00
447 查看
摘要: 小小的一个根据网络路径显示图片在ImageView中就折腾了我小一个钟头,写完一种各种错,网上找了各种解决方案,现在总结下。
从网上找到适合我的的解决方案大概如下:
需求:主线程中给ImageView赋值一个路径。
另外还必须有两句代码写在onCreate()中
大功告成,希望能帮到你们
从网上找到适合我的的解决方案大概如下:
需求:主线程中给ImageView赋值一个路径。
Handler handler = new Handler() { public void handleMessage(android.os.Message msg) { //这里调用了要显示图片的代码 new LongTimeTask().execute("获取的路径"); } }; private class LongTimeTask extends AsyncTask<String, Void, String> { @Override protected String doInBackground(String... params){ try { //线程睡眠2秒,模拟耗时操作,这里面的内容Android系统会自动为你启动一个新的线程执行 Thread.sleep(2000); } catch (InterruptedException e){ e.printStackTrace(); } return params[0]; } @Override protected void onPostExecute(String result){ //更新UI的操作,这里面的内容是在UI线程里面执行的 try { URL url = new URL(result); //显示图片 iv_photo.setImageBitmap(BitmapFactory.decodeStream(url.openStream())); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
另外还必须有两句代码写在onCreate()中
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectDiskReads(). detectDiskWrites().detectNetwork().penaltyLog().build()); StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder().detectLeakedSqlLiteObjects(). detectLeakedClosableObjects().penaltyLog().penaltyDeath().build());
大功告成,希望能帮到你们
相关文章推荐
- ios9 https 回退到http
- 让孩子把时间花在网络
- iOS中从网络获取数据的几种方法的比较
- 神经网络(二)
- VMware配置网络连接
- iOS 获取网络时间
- Java Web入门项目之“网络交友”的设计与实现
- c# 使用sharppcap实现 网络抓包
- 通过树莓派的无线网卡与pc的tcp助手通讯实验
- Ansible用于网络设备管理 part 2 对Jinja2 YAML 和 module的理解
- 子网掩码、端口、DNS、网关
- Android 6.0 使用 Apache HttpClient
- 通信协议-HTTP/TCP/UDP
- 基于TCP协议的树莓派灯光控制
- Oracle VM VirtualBox网络说明
- AOE网络
- HTTP Content-type
- Spark DAGScheduler模块源码解析(转自:http://guozhongxin.com/tag/spark.html)
- volley解惑
- 手把手入门神经网络系列(1)_从初等数学的角度初探神经网络