2
public static class TestTask extends AsyncTask<Void, Integer, Integer> {

    private String stacktrace;

    public TestTask (String stacktrace){

        this.stacktrace = stacktrace;
    }

    @Override
    protected Integer doInBackground(Void... params) {

        try {
            Log.i("async", "doInBackground 1"); //this gets logged
            HttpClient httpclient = new DefaultHttpClient();
            HttpPost httppost = new HttpPost("http://xx.xx:8080/android/service.php");
            List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
            nameValuePairs.add(new BasicNameValuePair("action", "logexception"));
            nameValuePairs.add(new BasicNameValuePair("stacktrace", stacktrace));
            httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

            HttpResponse response = httpclient.execute(httppost);
            Log.i("async", "doInBackground 2"); //this gets logged
            return 1;

        } catch (Exception e) {
            e.printStackTrace();
            return 0;
        }

    }

    protected void onPreExecute(){
        Log.i("async", "onPreExecute"); //this gets logged
    }

    @Override
    protected void onPostExecute(Integer result) {
        Log.i("async", "onPostExecute"); //this doenst get logged!


    }
}

これに関して他のSOスレッドをチェックしてきましたが、それらによると、私のコードは私が知る限り正しいようです。では、なぜ私は到達しないのLog.i("async", "onPostExecute");ですか?ありがとう

4

2 に答える 2

1

スレッドを作成しましAsyncTaskたか? UI他は良さそうです。ジェネリックと注釈は問題ありません。

おそらく問題は、何かが返されるときに自動的に呼び出されるdoInBackgroundため、メソッドが返されないことです。onPostExecutedoInBackground

于 2012-07-01T13:27:45.700 に答える
-1

に電話する必要がありsuperますonPostExecute()

したがって、コードは次のようになります。

@Override
public void onPostExecute(Integer result) {
    super.onPostExecute(result);
    Log.i("async", "onPostExecute");
}

そして、これはうまくいくはずです

于 2012-07-01T13:06:39.043 に答える