1

我试图在将图像从 url 获取到 imageview 时显示 progressDialog。当试图显示progressDialog时,父活动已经泄漏了窗口......

奇怪的是我在这个活动中有两个片段,在第一个片段中调用progressdialog的方式完全相同,但是当片段被替换并且我尝试再次让它崩溃时。

这是我在崩溃的第二个片段中使用的异步任务:

class SkinPreviewImage extends AsyncTask<Void, Void, Void> {

    private ProgressDialog progressDialog;

    @Override
    protected void onPreExecute() {
        progressDialog = new ProgressDialog(getActivity());
        progressDialog.setMessage("Loading preview...");
        if(progressDialog != null) progressDialog.show();
        progressDialog.setOnCancelListener(new OnCancelListener() {
            public void onCancel(DialogInterface arg0) {
                SkinPreviewImage.this.cancel(true);
            }
        });
    }

    @Override
    protected Void doInBackground(Void... params) {
        try {
            URL newurl = new URL(url); 
            Bitmap mIcon_val = BitmapFactory.decodeStream(newurl.openConnection().getInputStream());
            skinPreview.setImageBitmap(mIcon_val);
        } catch (IOException e) {
            Log.e("SkinStoreDetail", e.getMessage());
        }
        return null;
    }

    @Override
    protected void onPostExecute(Void v) {
        if(progressDialog != null) progressDialog.dismiss();
    }
}

我已经看到了一些类似的问题,但最接近解决我的问题的一个为我没有使用的父母使用了 groupactivity。

有什么建议么?

4

1 回答 1

1

您不能在其中执行任何 UI 任务,doInBackground()否则您将崩溃。覆盖onProgressUpdate()并在那里执行。有关更多详细信息,请参阅文档:http: //developer.android.com/reference/android/os/AsyncTask.html

于 2013-06-27T15:06:39.473 回答