我正在使用这段代码:
public void Close() {
DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
switch(which) {
case DialogInterface.BUTTON_POSITIVE:
dialog.dismiss();
MainActivity.this.finish();
break;
case DialogInterface.BUTTON_NEGATIVE:
dialog.cancel();
break;
}
}
};
final AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("Thanks");
builder.setPositiveButton("Quit", dialogClickListener);
builder.setNegativeButton("Stay", dialogClickListener);
MainActivity.this.runOnUiThread(new Runnable() {
public void run() {
builder.show();
}
});
}
当用户选择退出时调用 Close()。它会打开一个警报框“构建器”。当我在构建器上选择“退出”时,我收到此错误:
06-23 18:32:25.230: E/WindowManager(532): 活动 com.amateurprogs.championpkg.MainActivity 泄露了最初添加在这里的窗口 com.android.internal.policy.impl.PhoneWindow$DecorView@41768940 06-23 18:32:25.230: E/WindowManager(532): android.view.WindowLeaked: Activity com.amateurprogs.championpkg.MainActivity 泄露了窗口 com.android.internal.policy.impl.PhoneWindow$DecorView@41768940最初添加在这里 06-23 18:32:25.230: E/WindowManager(532): 在 android.view.ViewRootImpl.(ViewRootImpl.java:344) 06-23 18:32:25.230: E/WindowManager(532): 在 android.view.WindowManagerImpl.addView(WindowManagerImpl.java:267) 06-23 18:32:25.230: E/WindowManager(532): 在 android.view.WindowManagerImpl.addView(WindowManagerImpl.java:215) 06-23 18:32:25.230: E/WindowManager(532): 在 android.view.WindowManagerImpl$CompatModeWrapper.addView(WindowManagerImpl.java:140) 06-23 18:32:25.230: E/WindowManager(532): 在 android.view.Window$LocalWindowManager.addView(Window.java:537) 06-23 18:32:25.230: E/WindowManager(532): 在 android.app.Dialog.show(Dialog.java:278) 06-23 18:32:25.230: E/WindowManager(532): 在 android.app.AlertDialog$Builder.show(AlertDialog.java:932) 06-23 18:32:25.230: E/WindowManager(532): at com.amaturprogs.championpkg.MainActivity$2.run(MainActivity.java:42)
MainActivity.java 的第 42 行引用了 builder.show()。
在选择“退出”按钮时,我执行 dialog.dismiss(),然后执行 Activity.finish()。仍然我得到一个窗口泄漏。
为什么即使在 dialog.dismiss() 上我也会收到此错误。