Android报错:android.os.NetworkOnMainThreadException
·
在Android 4.0以上,网络连接不能放在主线程上,否则报错android.os.NetworkOnMainThreadException。但是4.0下版本可以不会报错。
官方解释
在Android4.0以后,写在主线程(就是Activity)中的HTTP请求,运行时都会报错,这是因为Android在4.0以后为了防止应用的ANR(Aplication Not Response)异常,Android这个设计是为了防止网络请求时间过长而导致界面假死的情况发生。
解决方案
1、在Activity的onCreate()方法中加入代码
适用于网络请求数据量很小
if (android.os.Build.VERSION.SDK_INT > 9) {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
}
2、启动子线程进行网络请求(推荐使用)
new Thread(new Runnable(){
@Override
public void run() {
//请求详情
}).start();
更多推荐
已为社区贡献4条内容
所有评论(0)