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

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

在android2.3之后在主线程中禁止直接访问网络,必须使用另一个线程如handler机制,或者异步任务获取网络数据,下面给出两种解决方案。

1、如果你想直接在主线程中访问网络,请使用第一种方法,该方法简单暴力,但不推荐使用。

我们只需要在onCreate方法的setContentView(R.layout.activity_main);后面加上这样一段代码即可:

if(android.os.Build.VERSION.SDK_INT>9){

StrictMode.ThreadPolicypolicy=newStrictMode.ThreadPolicy.Builder().permitAll().build();

StrictMode.setThreadPolicy(policy);

}

2、既然不能在主线程中连网,那我们就新建一个线程来操作网络数据,推荐使用该方法。

newThread(){

@Override

publicvoidrun(){

//把要连网的代码放在这里

}

}.start();

相关推荐