android.os.NetworkOnMainThreadException异常处理
Posted 木白星枝
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android.os.NetworkOnMainThreadException异常处理相关的知识,希望对你有一定的参考价值。
字面意思是说:在主线程中的网络异常。
一个APP如果在主线程中请求网络操作,将会抛出此异常。android这个设计是为了防止网络请求时间过长而导致界面假死的情况发生。
解决方案有两个,一个是使用StrictMode,二是使用线程来操作网络请求。
第一种方法:简单暴力,强制使用,代码修改简单(但是非常不推荐)
在MainActivity文件的OnCreate()方法里加上如下代码:
if (android.os.Build.VERSION.SDK_INT > 9) {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
}
第二种方法:就是我使用的方法也是我要推荐的方法,将请求网络资源的代码使用Thread去操作。在Runnable中做HTTP请求,不用阻塞UI线程。
new Thread(new Runnable(){
@Override
public void run() {
网络连接的相关代码
}
}).start();
以上是关于android.os.NetworkOnMainThreadException异常处理的主要内容,如果未能解决你的问题,请参考以下文章