关于连接网络时抛出“android.os.NetworkOnMainThreadException”异常问题

以前在Android2.2/2.3正常运行的客户端程序,升级到Android4.0以后怎么也连不上机器人小车了,调试发现会抛出“android.os.NetworkOnMainThreadException”这个异常信息。

然后经过查证,原来自从Android 2.3之后,系统增加了一个类:StrictMode。这个类对网络的访问方式进行了一定的改变。

直接给解决方法吧,就是在入口activitie里的oncreate方法里面加入如下代码即可解决该问题:

StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectDiskReads().detectDiskWrites().detectNetwork().penaltyLog().build());
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder().detectLeakedSqlLiteObjects().detectLeakedClosableObjects().penaltyLog().penaltyDeath().build());

至于为什么会做这样的改变,请参考链接:
【1】k-beta.com/android-os-networkonmainthreadexception.html
【2】www.cnblogs.com/sjrhero/articles/2606833.html

原文地址:https://www.cnblogs.com/wzc0066/p/2948390.html