標籤:finish thread smi inter nat pat star wro ini
今天偵錯工具時log中突然列印這樣的錯誤,但是程式並沒有crash,為了不放過一個錯誤,我決定調查一下。
當時是離開一個activity,然後提示是否退出此介面,接下來就列印此錯誤:
03-08 18:02:48.521: E/WindowManager(6340): Activity com.linc.megatron.activity.ExamActivity has leaked window com.android.internal[email protected] that was originally added here03-08 18:02:48.521: E/WindowManager(6340): android.view.WindowLeaked: Activity com.linc.megatron.activity.ExamActivity has leaked window com.android.internal[email protected] that was originally added here03-08 18:02:48.521: E/WindowManager(6340): at android.view.ViewRoot.<init>(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就好。
@Override protected void onDestroy() { if(mDialog != null) { mDialog.dismiss(); } super.onDestroy(); }
Android Activity has leaked window that was originally added