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异常处理的主要内容,如果未能解决你的问题,请参考以下文章