2010-07-06 91 views
0

我有線程正在從web獲取內容的「onCreate」。在內容越來越多的時候,我有進展對話。Android線程主要退出

new Thread() { 

    public void run() { 

    Get_content() ; 


    handler.sendEmptyMessage(0); 
    } 

    }.start(); 

但是,如果我旋轉顯示屏(橫向模式),而這個運行時,我的應用程序獲取強行關閉。在日誌中我有這樣的:「螺紋主力退出,由於未捕獲的異常」

這是我的日誌:

W/dalvikvm(17144):主題ID = 3:螺紋,未捕獲的異常(集團退出= E/AndroidRuntime(17144):在android上查看未附加到窗口管理器 E/AndroidRuntime(17144):未捕獲的處理程序:線程主要由於未捕獲的異常而退出 E/AndroidRuntime(17144):java.lang.IllegalArgumentException: .view.WindowManagerImpl.findViewLocked(WindowManagerImpl.java:356) E/AndroidRuntime(17144):at android.view.WindowManagerImpl.removeView(WindowManagerImpl.java:201)E/AndroidRuntime(17144):at android.app.Dialog.dismissDialog(Dialog.java:268) E/AndroidRuntime(17144):at android.view.Window $ LocalWindowManager.removeView(Window.java:400) E/AndroidRuntime(17144):at android.app.Dialog.access $ 000(Dialog.java:69) E/AndroidRuntime(17144):at android.app.Dialog $ 1.run(Dialog.java:103) E/AndroidRuntime (17144):at 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.invoke(Method.java:521) E/AndroidRuntime(17144):在java.lang.reflect.Method.invokeNative(本地方法) 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):在dalvik.system.NativeStart.main(本機方法) I/dalvikvm(17144):threadid = 7:對信號3作出反應 I/ActivityManager(59):Process com。 webservice(pid 17144)已經死亡。

+2

它應該說什麼logcat異常 - 你可以張貼。 另外,當你旋轉顯示器時,它會調用onResume和其他一些方法 - 你可以在該Activity中發佈剩餘的代碼嗎? – xil3 2010-07-06 11:21:53

+1

而且,請您在以前的問題上得到如此多的幫助 - 去接受答案(只需點擊勾號) – 2010-07-06 11:26:51

+1

請注意,當您旋轉顯示屏時,活動會被殺死並創建一個新的,意思是onCreate )將被再次調用。 – ian 2010-07-06 11:28:50

回答

2

正在發生的事情是取向變化,活動被殺死並重新創建。但是,由於您啓動了一個線程並且線程仍在運行,因此它不會被終止,並且當它完成並嘗試關閉進度對話框時,會導致FC,因爲進程對話框不存在。這是一個很常見的問題,你可以查看試圖解決這個問題的droid-fu庫,或者你可以更聰明地使用Threaded任務(比如,如果它需要花費大量時間來完成,那麼可能會把它放入後臺服務)。

+0

是否巧妙地把關閉對話框的代碼放在try catch塊中?我想我不會得到FC。 – user345602 2010-07-06 12:28:12