09-17 23:03:38.954: E/WindowManager(1994): at android.view.inputmethod.InputMethodManager$ImeInputEventSender.onInputEventFinished(InputMethodManager.java:1987)
09-17 23:03:38.954: E/WindowManager(1994): at android.view.InputEventSender.dispatchInputEventFinished(InputEventSender.java:141)
09-17 23:03:38.954: E/WindowManager(1994): at android.os.MessageQueue.nativePollOnce(Native Method)
09-17 23:03:38.954: E/WindowManager(1994): at android.os.MessageQueue.next(MessageQueue.java:138)
09-17 23:03:38.954: E/WindowManager(1994): at android.os.Looper.loop(Looper.java:123)
09-17 23:03:38.954: E/WindowManager(1994): at android.app.ActivityThread.main(ActivityThread.java:5017)
09-17 23:03:38.954: E/WindowManager(1994): at
java.lang.reflect.Method.invokeNative(Native Method)
09-17 23:03:38.954: E/WindowManager(1994): at java.lang.reflect.Method.invoke(Method.java:515)
09-17 23:03:38.954: E/WindowManager(1994): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
09-17 23:03:38.954: E/WindowManager(1994): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
09-17 23:03:38.954: E/WindowManager(1994): at dalvik.system.NativeStart.main(Native Method)
首先说明:这个错误不属于内存溢出,而是android中的窗体溢出。
1.Activity 的生命周期与 Dialog 的不一样 AlertDialog.Builder builder=new AlertDialog.Builder(context);
2.这个context 是Activity的上下文
3.Dialog 要在Activity 销毁前 dismiss()掉,不然就窗体溢出
所以在解决此问题时,要判断窗体是否关闭,再干掉Activity
/**
- 捕获返回按钮事件
*/
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
showExitDialog();
return false;
} else {
return super.onKeyDown(keyCode, event);
}
}
//退出提示
protected void showExitDialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle(“提示”);
builder.setMessage(“您确定要退出么?”);
builder.setNegativeButton(“取消”, null);
builder.setPositiveButton(“退出”, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
MainActivity.this.finish();
dialog.cancel();//取消dialog,或dismiss掉
}
});
if (!isFinishing()) {
builder.create().show();
}
}