Android报错:android.os.NetworkOnMainThreadException
16lz
2021-12-04
在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();
更多相关文章
- Android(安卓)实现json网络数据通过BaseAdapter加载到ListView中
- android 网络访问-图片处理优秀开源项目
- Android笔记--handler机制
- Android使用HttpURLConnection和HttpClient请求服务器数据
- android 线程(一)
- Android系列之网络(二)----获取HTTP请求头与响应头
- Android网络游戏之神农诀项目开发--视频观看地址
- Android(安卓)网络(四) Retrofit学习笔记
- android客户端程序访问服务器端webservice,几篇不错的文章!