网络异常 - android.os.NetworkOnMainThreadException

问题出在:

  • 你在主线程中做了请求网络这个操作,而Android设计者不允许你这样操作。
  • 为什么呢,为了防止网络请求时间过长而导致界面假死的情况发生。
  • 想要具体了解更多,可参照这篇博客:android.os.NetworkOnMainThreadException

在这里插入图片描述

问题解决:

  1. (不推荐) 简单暴力,强制使用,代码修改简单
    在MainActivity.java 文件的 setContentView(R.layout.activity_main); 下面加上如下代码:
if (android.os.Build.VERSION.SDK_INT > 9) {
    StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
    StrictMode.setThreadPolicy(policy);
}

  1. (推荐的方法) 将请求网络资源的代码使用Thread去操作。
    在Runnable中做网络请求,不用阻塞UI线程。
// Android 4.0 之后不能在主线程中请求HTTP请求
  new Thread(new Runnable(){
      @Override
      public void run() {
                   
      }
  }).start();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值