关于Android开发中的android.os.networkonmainthreadexception问题

首先明确一点出现此错误并不是代表代码错误。

在android2.3之后 在主线程中禁止直接访问网络,必须使用另一个线程如handler机制,或者异步任务获取网络数据,下面给出两种解决方案。
1、如果你想直接在主线程中访问网络,请使用第一种方法,该方法简单暴力,但不推荐使用。
我们只需要在onCreate方法的setContentView(R.layout.activity_main);后面加上这样一段代码即可:
if (android.os.Build.VERSION.SDK_INT > 9) {
    StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();           

    StrictMode.setThreadPolicy(policy);       

}

2、既然不能在主线程中连网,那我们就新建一个线程来操作网络数据,推荐使用该方法。
new Thread(){
@Override
public void run(){
//把要连网的代码放在这里
}
}.start();

猜你喜欢

转载自xiaofuyan.iteye.com/blog/2344246