0

私は現在、Android での AsyncTask'ing について少し学ぼうとしています。私が取り組んでいる学校のプロジェクトのコードフラグメントを使用していますが、正しく実行できないようです。私が得ているエラーは次のとおりです。

「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 に答える