0

我目前正在尝试了解有关 Android 中 AsyncTask 的一些知识。我正在使用我正在使用的一些学校项目的代码片段,但我似乎无法正确运行它。我得到的错误如下:

“SingleClientConnManager 的使用无效:连接仍然分配。确保在分配另一个连接之前释放连接。”

所以基本上我确实理解所说的,我需要在开始另一个之前关闭 http 连接。(如果我错了,请纠正我哈哈)所以我想知道是否有人可以在这里帮助我,因为我已经被困了几个小时。

我正在使用的代码如下:

protected class loader extends AsyncTask<String, Void, String> {

    @Override
    protected String doInBackground(String... params) {
        // TODO Auto-generated method stub

        try {
            httpclient = new DefaultHttpClient();
            httppost = new HttpPost("url_of_my_phpdocument_here.php");
            //legg til data
            nameValuePairs = new ArrayList<NameValuePair>(1);

            nameValuePairs.add(new BasicNameValuePair("username",username.getText().toString().trim()));
            nameValuePairs.add(new BasicNameValuePair("password",password.getText().toString().trim()));
            httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

            response=httpclient.execute(httppost);

            ResponseHandler<String> responseHandler = new BasicResponseHandler();
            final String response = httpclient.execute(httppost, responseHandler);

            //Toast.makeText(MainActivity.this,response, Toast.LENGTH_LONG).show();

            //tv.setText(""+response);
            if(response.equalsIgnoreCase("User Found"))
            {
                startActivity(new Intent("com.example.obligatorisk.BROWSER"));
            }
        }
        catch(Exception e){
            e.printStackTrace();
        }

        return null;
    }
    // TODO Auto-generated method stub

}

我做了很多研究并找到了解决方案,但对于我发现的那些示例,它们似乎非常不同和定制。即使我已经和他们玩了很长时间,我似乎也无法让他们中的任何一个工作。

谢谢你。:-)

4

1 回答 1

0

SingleClientConnManager 的无效使用在 Android 2.2,2.3 中发生,但在 4.1 中没有

您可能想查看上面提到的线程安全问题。我认为您需要了解您的 API 版本在“异步任务”中是否默认为单线程。

于 2012-11-30T22:50:52.680 回答