我在“onCreate”中有线程,它从网上获取内容。内容越来越多,我有进度对话框。
new Thread() {
public void run() {
Get_content() ;
handler.sendEmptyMessage(0);
}
}.start();
但是如果我在运行时旋转显示(横向模式),我的应用程序会强制关闭。在日志中我有这个:“由于未捕获的异常导致主线退出”
这是我的日志:
W / dalvikvm(17144):threadid = 3:线程退出时未捕获异常(组= 0x40013140) E / AndroidRuntime(17144):未捕获的处理程序:由于未捕获的异常而导致线程主要退出 E / AndroidRuntime(17144):java.lang.IllegalArgumentException:视图未附加到窗口管理器 E / AndroidRuntime(17144):在android.view.WindowManagerImpl.findViewLocked(WindowManagerImpl.java:356) E / AndroidRuntime(17144):在android.view.WindowManagerImpl.removeView(WindowManagerImpl.java:201) E / AndroidRuntime(17144):在android.view.Window $ LocalWindowManager.removeView(Window.java:400) E / AndroidRuntime(17144):在android.app.Dialog.dismissDialog(Dialog.java:268) E / AndroidRuntime(17144):在android.app.Dialog.access $ 000(Dialog.java:69) E / AndroidRuntime(17144):在android.app.Dialog $ 1.run(Dialog.java:103) E / AndroidRuntime(17144):在android.app.Dialog.dismiss(Dialog.java:252) E / AndroidRuntime(17144):at com.webservice.KursnaLista $ 1.handleMessage(KursnaLista.java:77) E / AndroidRuntime(17144):在android.os.Handler.dispatchMessage(Handler.java:99) E / AndroidRuntime(17144):在android.os.Looper.loop(Looper.java:123) E / AndroidRuntime(17144):在android.app.ActivityThread.main(ActivityThread.java:3948) E / AndroidRuntime(17144):at java.lang.reflect.Method.invokeNative(Native Method) E / AndroidRuntime(17144):at java.lang.reflect.Method.invoke(Method.java:521) E / AndroidRuntime(17144):at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:782) E / AndroidRuntime(17144):at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:540) E / AndroidRuntime(17144):at dalvik.system.NativeStart.main(Native Method) I / dalvikvm(17144):threadid = 7:对信号3作出反应 I / ActivityManager(59):进程com.webservice(pid 17144)已经死亡。
答案 0 :(得分:2)
正在发生的事情是方向改变,活动被杀死并重新创建。但是,由于您启动了一个线程并且线程仍在运行,因此它不会被终止,当它完成并尝试关闭进度对话框时,会导致FC,因为进度对话框不存在。这是一个非常常见的问题,您可以查看试图解决此问题的droid-fu库,或者您可以更聪明地处理您的Threaded任务(就好像它需要花费相当长的时间才能完成,然后也许把它放在后台服务中。)