我在SO上已经看到了所有类似的问题,并且在其他活动中使用了AsyncTask,但是仅在这一活动中未调用onPostexecute。

经过数小时的尝试,这是我的代码。

class GetCamera1Task extends AsyncTask<Void, Void, Integer> {

        private final ProgressDialog dialog = new ProgressDialog(
                CameraGallery.this);

        @Override
        protected void onPreExecute() {
            this.dialog.setMessage("Loading...");
            this.dialog.show();
        }

        protected void onPostExecute(int result) {
            System.out.println("onPostExecute");
            this.dialog.dismiss();


        }

        @Override
        protected Integer doInBackground(Void... params) {
            // TODO Auto-generated method stub
            bitmapResult1 = getBitmapFromURL(url[0]);
            bitmapResult2 = getBitmapFromURL(url[1]);
        }
            System.out.println("should return");

            return 1;
        }

    }


其中所有变量都是全局变量。
应该返回应该返回的内容,但不会调用onPost执行。

我也尝试过onBackground返回null和sceleton像这样:

class GetCamera1Task extends AsyncTask<Void, Void, Void> {
protected void onPostExecute() {
}
protected Integer doInBackground(Void... params) {
... return null;
}
}


但是再也没有。

从网址下载bitMap的代码是这样的:

public Bitmap getBitmapFromURL(String src) {
        try {
            URL url = new URL(src);
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            connection.setDoInput(true);
            connection.connect();
            InputStream input = connection.getInputStream();
            Bitmap myBitmap = BitmapFactory.decodeStream(input);
            return myBitmap;
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }
    }

最佳答案

您将通用参数定义为AsyncTask<Void, Void, Integer>,然后在int中使用onPostExecute()。尝试更换

protected void onPostExecute(int result)




protected void onPostExecute(Integer result)

07-28 12:57