您的位置:首页 > 移动开发 > Android开发

android.os.NetworkOnMainThreadException异常原因

2015-06-10 16:46 751 查看
写了个socket测试程序,程序没有错,但atvitity却莫名其妙的老是崩溃,查找半天原来是以下问题,特此记录一下。

android.os.NetworkOnMainThreadException是指在主线程中访问网络,但android3.0版本开始就强制程序不能在主线程中访问网络,防止发生阻塞,所以要把访问网络放在独立的线程中。

在开发中,为了防止访问网络阻塞主线程,一般都要把访问网络放在独立线程中或者异步线程AsyncTask中。

1、想要忽略这些强制策略问题的话,可以在onCreate()方法里面加上

StrictMode.ThreadPolicy policy=new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);

并在公共类上面加上@SuppressLint("NewApi"),就OK,测试时可以这样写,一般不建议这样写。

例如:

@SuppressLint("NewApi")
//

public class MainActivity extends Activity {

EditText editText;

Button sendButton;

TextView tv;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

StrictMode.ThreadPolicy policy=new StrictMode.ThreadPolicy.Builder().permitAll().build();

StrictMode.setThreadPolicy(policy);

editText = (EditText)findViewById(R.id.editText);

sendButton = (Button)findViewById(R.id.sendButton);

tv = (TextView)findViewById(R.id.tv);

...
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: