Caused by: android.os.NetworkOnMainThreadException错误解决办法

2019-12-10 20:01:36于丽
  • Runnable runnable = new Runnable(){  @Override 
  • public void run() {  // 
  • // TODO: http request.  // 
  • Message msg = new Message();  Bundle data = new Bundle(); 
  • data.putString("value","请求结果");  msg.setData(data); 
  • handler.sendMessage(msg);  } 
  • 附:另一篇解决方案

    Android 4.1项目:使用新浪微博分享时报:

    android.os.NetworkOnMainThreadException

    网上搜索后知道是因为版本问题,在4.0之后在主线程里面执行Http请求都会报这个错,也许是怕Http请求时间太长造成程序假死的情况吧。那么网上的朋友也给出了相应的解决方案,这叫上有政策下有对策:

    一:在发起Http请求的Activity里面的onCreate函数里面添加如下代码:

     

     
    1. //详见StrictMode文档  StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectDiskReads(). 
    2. detectDiskWrites().detectNetwork().penaltyLog().build());  StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder().detectLeakedSqlLiteObjects(). 
    3. detectLeakedClosableObjects().penaltyLog().penaltyDeath().build());