Activity已泄漏最初添加了进度对话框的窗口

时间:2013-07-12 14:11:16

标签: android

我这里有这段代码:我这里有这段代码:我这里有这段代码:

public class MainTask extends Activity {

private boolean flag=false;
private Context context;
private String url;
private ProgressDialog pd;
private View view;

public MainTask(Context context,String url,View view) {
    this.url=url;
    this.view=view;
    this.context=context;
    BitmapDownloaderTask task = new BitmapDownloaderTask();
    task.execute();
}


private Void MainThread() {
    int  leave=0;
    int  pass=0;

    while(true){

        if(leave==-1){
            flag=true;
            break;
        }
        else if(pass==Preferences.vcheckimage.size())
            break;

        for(int i=0;i<Preferences.vcheckimage.size();i++){

            if(Preferences.vcheckimage.get(i).equals("-1")){
                leave=-1;
                break;
            }
            else{
                pass++;
            }
        }
    return null;  
}


private class BitmapDownloaderTask extends AsyncTask<Void, Void, Void> {

    public BitmapDownloaderTask() {

    }

    @Override
    protected void onPreExecute() {
        // TODO Auto-generated method stub
        view.setEnabled(false);
        pd = new ProgressDialog(context);
        pd.setTitle("Processing...");
        pd.setMessage("Please wait.");
        pd.setCancelable(false);                  
        pd.setButton(DialogInterface.BUTTON_NEGATIVE, "Cancel", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                dialog.dismiss();
            }
        });

        pd.setIndeterminate(true);
        pd.show();
    }

    @Override
    protected Void doInBackground(Void... params) {
        return MainThread();
    }

     @Override
     protected void onPostExecute(Void result) {

        pd.dismiss();

        if(flag){           
         Toast.makeText(context,"Image is not available yet.", Toast.LENGTH_LONG).show();

        }

    }
}
 }

但是当我运行这个时,我得到以下错误:

 05-17 18:24:57.069: ERROR/WindowManager(18850): Activity com.mypkg.myP has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@44c46ff0 that was originally added here
    05-17 18:24:57.069: ERROR/WindowManager(18850): android.view.WindowLeaked: Activity ccom.mypkg.myP has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@44c46ff0 that was originally added here
    05-17 18:24:57.069: ERROR/WindowManager(18850):     at android.view.ViewRoot.<init>(ViewRoot.java:231)
    05-17 18:24:57.069: ERROR/WindowManager(18850):     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:148)
    05-17 18:24:57.069: ERROR/WindowManager(18850):     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
    05-17 18:24:57.069: ERROR/WindowManager(18850):     at android.view.Window$LocalWindowManager.addView(Window.java:424)
    05-17 18:24:57.069: ERROR/WindowManager(18850):     at android.app.Dialog.show(Dialog.java:239)
    05-17 18:24:57.069: ERROR/WindowManager(18850):     at com.mypkg.myP$PreparePairingLinkageData.onPreExecute(viewP.java:183)
    05-17 18:24:57.069: ERROR/WindowManager(18850):     at android.os.AsyncTask.execute(AsyncTask.java:391)
    05-17 18:24:57.069: ERROR/WindowManager(18850):     at com.mypkg.myP.onCreate(viewP.java:94)
    05-17 18:24:57.069: ERROR/WindowManager(18850):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
    05-17 18:24:57.069: ERROR/WindowManager(18850):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2544)
    05-17 18:24:57.069: ERROR/WindowManager(18850):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2621)
    05-17 18:24:57.069: ERROR/WindowManager(18850):     at android.app.ActivityThread.access$2200(ActivityThread.java:126)
    05-17 18:24:57.069: ERROR/WindowManager(18850):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1932)
    05-17 18:24:57.069: ERROR/WindowManager(18850):     at android.os.Handler.dispatchMessage(Handler.java:99)
    05-17 18:24:57.069: ERROR/WindowManager(18850):     at android.os.Looper.loop(Looper.java:123)
    05-17 18:24:57.069: ERROR/WindowManager(18850):     at android.app.ActivityThread.main(ActivityThread.java:4595)
    05-17 18:24:57.069: ERROR/WindowManager(18850):     at java.lang.reflect.Method.invokeNative(Native Method)
    05-17 18:24:57.069: ERROR/WindowManager(18850):     at java.lang.reflect.Method.invoke(Method.java:521)
    05-17 18:24:57.069: ERROR/WindowManager(18850):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
    05-17 18:24:57.069: ERROR/WindowManager(18850):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
    05-17 18:24:57.069: ERROR/WindowManager(18850):     at dalvik.system.NativeStart.main(Native Method)

有谁知道为什么会这样?我看到和其他帖子但没有帮助我。

先谢谢。

1 个答案:

答案 0 :(得分:0)

我想BitmapDownloaderTask 属于MainThread的内部 是整个问题。尝试匹配括号,解决问题。

修改 最后一点来自我的身边。我的MainThread代码就是这个

private Void MainThread() {
        int leave = 0;
        int pass = 0;

        while(true) {

            if(leave==-1) {
                flag=true;
                break;
            } 
            else if(pass==Preferences.vcheckimage.size())
                break;

            for(int i=0;i<Preferences.vcheckimage.size();i++) {
                if(Preferences.vcheckimage.get(i).equals("-1")) {
                    leave=-1;
                    break;
                } else {
                    pass++;
                }
            }
            break;
        }
        return null;  
    }