0

我得到的内存泄漏,但我不知道如何解决它为什么我收到内存泄漏

public class ActivityA extends Activity { 
CheckBox cb1,cb2,cb3,cb4; 
public static int flag=1,flag2=0,flag3=1; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.setting); 
    cb1=(CheckBox) findViewById(R.id.checkBox1); 
    cb2=(CheckBox) findViewById(R.id.checkBox3); 
    cb3=(CheckBox) findViewById(R.id.checkBox4); 
    new LoadAsync().execute(); 
    graph=(ImageView)findViewById(R.id.imageView1); 
public void Onclick(View arg0) { 
    // TODO Auto-generated method stub 
    if(cb1.isChecked()) 
     flag1=1; 
    else 
     flag1=0; 
    if(cb2.isChecked()) 
     flag2=1; 
    else 
     flag2=0; 
    if(cb3.isChecked()) 
     flag3=1; 
    else 
     flag3=0; 
    if(flash.isChecked()) 
     flash_flag=1; 
    else 
     flash_flag=0; 
     if(flag1==1 && flag3==1 && flag2==1) 
     graph.setImageResource(R.drawable.graph1); 
     else if(flag1==1 && flag3==1 && flash_flag==0) 
     graph.setImageResource(R.drawable.graph2); 
} 
public class LoadAsync extends AsyncTask<Void, Void, Boolean> {//inner class 
    ProgressDialog pDialog; 
@Override 
    protected void onPreExecute() { 
     // TODO Auto-generated method stub 
     super.onPreExecute(); 
     pDialog = ProgressDialog.show(ActivityA.this,"Loading ", "Please wait");**// memory leak points me here** 
    } 
    @Override 
    protected Boolean doInBackground(Void... params) { 
     // TODO Auto-generated method stub 
     loadToDB(); 
     return true; 
    } 
    @Override 
    protected void onPostExecute(Boolean result) { 
     // TODO Auto-generated method stub 
     super.onPostExecute(result); 
     pDialog.dismiss(); 
    } 
} 
private void loadToDB() { 
//load the database 
     } 

} 

这个活动是我TabActivity命名MYTAB

这是我的日志猫错误

7-25 08:58:10.311: E/WindowManager(1583): Activity com.example.app.OneTouchPanelActivity has leaked window [email protected] that was originally added here 
07-25 08:58:10.311: E/WindowManager(1583): android.view.WindowLeaked: Activity com.example.app.MyTab has leaked window [email protected] that was originally added here 
07-25 08:58:10.311: E/WindowManager(1583): at android.view.ViewRoot.<init>(ViewRoot.java:247) 
07-25 08:58:10.311: E/WindowManager(1583): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:148) 
07-25 08:58:10.311: E/WindowManager(1583): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91) 
07-25 08:58:10.311: E/WindowManager(1583): at android.view.Window$LocalWindowManager.addView(Window.java:424) 
07-25 08:58:10.311: E/WindowManager(1583): at android.app.Dialog.show(Dialog.java:241) 
07-25 08:58:10.311: E/WindowManager(1583): at android.app.ProgressDialog.show(ProgressDialog.java:107) 
07-25 08:58:10.311: E/WindowManager(1583): at android.app.ProgressDialog.show(ProgressDialog.java:90) 
07-25 08:58:10.311: E/WindowManager(1583): at android.app.ProgressDialog.show(ProgressDialog.java:85) 
07-25 08:58:10.311: E/WindowManager(1583): at com.example.app.ActivityA$LoadAsync.onPreExecute(ActivityA.java:204) 
07-25 08:58:10.311: E/WindowManager(1583): at android.os.AsyncTask.execute(AsyncTask.java:391) 

回答

4

窗口泄漏的异常通常是由未被正确解除的对话引起的。也就是说,如果您打算在AsyncTask的Onpostexecute中放弃对话框,并且创建该对话框的活动已结束,它将会抛出窗口泄漏。确保你在活动的onPause中对话。

+0

我会试试this.thnx –