dialog显示引起的界面无法打开的问题,报错信息如下:
- 03-08 18:02:48.521: E/WindowManager(6340): Activity com.linc.megatron.activity.ExamActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@40568ea8 that was originally added here
- 03-08 18:02:48.521: E/WindowManager(6340): android.view.WindowLeaked: Activity com.linc.megatron.activity.ExamActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@40568ea8 that was originally added here
- 03-08 18:02:48.521: E/WindowManager(6340): at android.view.ViewRoot.(ViewRoot.java:264)
- 03-08 18:02:48.521: E/WindowManager(6340): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:148)
- 03-08 18:02:48.521: E/WindowManager(6340): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
- 03-08 18:02:48.521: E/WindowManager(6340): at android.view.Window$LocalWindowManager.addView(Window.java:424)
- 03-08 18:02:48.521: E/WindowManager(6340): at android.app.Dialog.show(Dialog.java:241)
- 03-08 18:02:48.521: E/WindowManager(6340): at com.linc.megatron.base.BackKeyActivity.showDialog(BackKeyActivity.java:76)
- 03-08 18:02:48.521: E/WindowManager(6340): at com.linc.megatron.base.BackKeyActivity.onKeyDown(BackKeyActivity.java:62)
- 03-08 18:02:48.521: E/WindowManager(6340): at android.view.KeyEvent.dispatch(KeyEvent.java:1256)
- 03-08 18:02:48.521: E/WindowManager(6340): at android.app.Activity.dispatchKeyEvent(Activity.java:2078)
- 03-08 18:02:48.521: E/WindowManager(6340): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:1709)
- 03-08 18:02:48.521: E/WindowManager(6340): at android.view.ViewRoot.deliverKeyEventToViewHierarchy(ViewRoot.java:2628)
- 03-08 18:02:48.521: E/WindowManager(6340): at android.view.ViewRoot.handleFinishedEvent(ViewRoot.java:2603)
- 03-08 18:02:48.521: E/WindowManager(6340): at android.view.ViewRoot.handleMessage(ViewRoot.java:1875)
- 03-08 18:02:48.521: E/WindowManager(6340): at android.os.Handler.dispatchMessage(Handler.java:99)
- 03-08 18:02:48.521: E/WindowManager(6340): at android.os.Looper.loop(Looper.java:123)
- 03-08 18:02:48.521: E/WindowManager(6340): at android.app.ActivityThread.main(ActivityThread.java:3687)
- 03-08 18:02:48.521: E/WindowManager(6340): at java.lang.reflect.Method.invokeNative(Native Method)
- 03-08 18:02:48.521: E/WindowManager(6340): at java.lang.reflect.Method.invoke(Method.java:507)
- 03-08 18:02:48.521: E/WindowManager(6340): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
- 03-08 18:02:48.521: E/WindowManager(6340): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)
- 03-08 18:02:48.521: E/WindowManager(6340): at dalvik.system.NativeStart.main(Native Method)
显然,我用Dialog确认是否退出,但是activity销毁后并没有处理Dialog的退出。
解决办法:
只需要在activity销毁时关闭Dialog就好。
[java] view plaincopy
- @Override
- protected void onDestroy() {
- if(mDialog != null) {
- mDialog.dismiss();
- }
- super.onDestroy();
- }