谁能向我解释为什么会出现此错误,或者更好的是我该如何处理它?我无法重现它。这是千分之一发生一次的错误之一。
背景:用户正在尝试登录,显示进度对话框,在异步任务中发送http请求,进度对话框被关闭。发生错误,应用程序 FC。
登录活动.java
255: private void dismissProgress() {
256: if (mProgress != null) {
257: mProgress.dismiss();
258: mProgress = null;
259: }
260: }
java.lang.IllegalArgumentException: View not attached to window manager
at android.view.WindowManagerImpl.findViewLocked(WindowManagerImpl.java:391)
at android.view.WindowManagerImpl.removeView(WindowManagerImpl.java:236)
at android.view.Window$LocalWindowManager.removeView(Window.java:432)
at android.app.Dialog.dismissDialog(Dialog.java:278)
at android.app.Dialog.access$000(Dialog.java:71)
at android.app.Dialog$1.run(Dialog.java:111)
at android.app.Dialog.dismiss(Dialog.java:268)
at se.magpern.LoginActivity.dismissProgress(LoginActivity.java:257)
at se.magpern.LoginActivity.access$5(LoginActivity.java:255)
at se.magpern.LoginActivity$DoTheLogin.onPostExecute(LoginActivity.java:293)
at se.magpern.LoginActivity$DoTheLogin.onPostExecute(LoginActivity.java:1)
at android.os.AsyncTask.finish(AsyncTask.java:417)
at android.os.AsyncTask.access$300(AsyncTask.java:127)
at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:429)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:144)
at android.app.ActivityThread.main(ActivityThread.java:4937)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
at dalvik.system.NativeStart.main(Native Method)
如果用户关闭视图(例如可以退出的对话框)或者用户在任务运行时切换到不同的活动,则可能会发生这种情况。你应该认真考虑使用Android活动原生 http://developer.android.com/guide/topics/ui/dialogs.html#ShowingADialog显示/关闭对话框,而不是尝试自己保留对视图的引用。但是如果您自己处理它,您可能需要检查对话框是否确实使用对话框的显示isShowing() http://developer.android.com/reference/android/app/Dialog.html#isShowing%28%29方法,然后再尝试忽略它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)