其他分享
首页 > 其他分享> > Android HttpClient:NetworkOnMainThreadException

Android HttpClient:NetworkOnMainThreadException

作者:互联网

我在下面有一些代码:

protected void testConnection(String url) {
    DefaultHttpClient httpclient = new DefaultHttpClient();
    HttpGet httpget = new HttpGet(url);
    ResponseHandler<String> responsehandler = new BasicResponseHandler();

    try {
        String connection = httpclient.execute(httpget, responsehandler);
        Toast.makeText(getBaseContext(), R.string.connection_succeed, Toast.LENGTH_SHORT).show();
        view_result.setText(connection);
    } catch(IOException e) {
        Toast.makeText(getBaseContext(), R.string.connection_failed, Toast.LENGTH_SHORT).show();
    }
    httpclient.getConnectionManager().shutdown();
}

并在Menifest中添加权限:

<uses-permission android:name="android.permission.INTERNET"/>

但它是一个例外:
NetworkOnMainThreadException,
我能怎么做?

解决方法:

在ICS及更高版本上,您无法再在UI线程上执行网络操作.相反,你被迫创建一个新的线程并在那里做你的网络.

可能的工具是Android的AsyncTask和普通的Java Thread.

可以在这里找到一个很好的教程:Android Threads, Handlers and AsyncTask – Tutorial

标签:android,networkonmainthread
来源: https://codeday.me/bug/20190723/1512223.html