关于Android开发中的android.os.networkonmainthreadexception有关问题
关于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();
首先明确一点出现此错误并不是代表代码错误。
在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();