我在“ onCreate”中有线程,该线程从Web获取内容。在获取内容时,我有进度对话框。

new Thread() {

     public void run() {

     Get_content() ;


    handler.sendEmptyMessage(0);
     }

     }.start();


但是,如果我在运行时将显示器旋转到横向模式,则我的应用程序会强制关闭。在日志中,我有以下内容:“由于未捕获的异常而导致线程主退出”

这是我的日志:


  W / dalvikvm(17144):threadid = 3:线程以未捕获的异常退出(group = 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):位于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):位于java.lang.reflect.Method.invokeNative(本机方法)
  E / AndroidRuntime(17144):位于java.lang.reflect.Method.invoke(Method.java:521)
  E / AndroidRuntime(17144):位于com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:782)
  E / AndroidRuntime(17144):位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:540)
  E / AndroidRuntime(17144):位于dalvik.system.NativeStart.main(本机方法)
  I / dalvikvm(17144):线程ID = 7:对信号3作出反应
  I / ActivityManager(59):进程com.webservice(pid 17144)已死。

最佳答案

发生的事情是方向改变,活动被杀死并重新创建。但是,由于您启动了一个线程并且该线程仍在运行,因此它不会被杀死,并且当它完成并尝试关闭“进度对话框”时,会导致FC,因为进度对话框不存在。这是一个非常常见的问题,您可以签出尝试解决此问题的droid-fu库,或者可以更聪明地执行Threaded任务(例如,如果要花费大量的时间才能完成,那么也许它在后台服务中)。

10-04 19:56