在Android4.0以上,不能再主线程中访问网络,否则就会出现android.os.NetworkOnMainThreadException异常。
会有这种要求的主要原因是网络状态不可预测,主线程如果直接访问网络,很可能出现阻塞,造成假死的状态。面对这个异常,可以用两种方案来解决。
其一:
在onCreate方法中增加下面两条语句,强制在主线程中访问网络:
StrictMode.ThreadPolicy policy=new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
这种方法并没有解决上面说的问题,可能造成不好的用户体验,不推荐使用。
其二:
新开一个线程,在其中访问网络。