2011-12-06 72 views
0

我已經獲得瞭如下定義的全屏幕縱向活動。橫向模式中警報框出現窗口泄漏錯誤

在清單:

<activity 
    android:name=".CameraActivity" 
    android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"> 
</activity> 

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 

此活動的OnCreate方法簡單地調用一個警告框,是和否按鈕。我的問題是,當手機保持在橫向狀態時,警報框崩潰,我得到下面顯示的泄漏窗口錯誤。

12-06 15:26:01.590: E/WindowManager(6286): Activity com.eyepax.rdms.CameraActivity has leaked window [email protected] that was originally added here 
12-06 15:26:01.590: E/WindowManager(6286): android.view.WindowLeaked: Activity com.eyepax.rdms.CameraActivity has leaked window [email protected] that was originally added here 
12-06 15:26:01.590: E/WindowManager(6286): at android.view.ViewRoot.<init>(ViewRoot.java:277) 
12-06 15:26:01.590: E/WindowManager(6286): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:148) 
12-06 15:26:01.590: E/WindowManager(6286): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91) 
12-06 15:26:01.590: E/WindowManager(6286): at android.view.Window$LocalWindowManager.addView(Window.java:433) 
12-06 15:26:01.590: E/WindowManager(6286): at android.app.Dialog.show(Dialog.java:288) 
12-06 15:26:01.590: E/WindowManager(6286): at com.eyepax.rdms.CameraActivity$CameraTask.onPreExecute(CameraActivity.java:177) 
12-06 15:26:01.590: E/WindowManager(6286): at android.os.AsyncTask.execute(AsyncTask.java:391) 
12-06 15:26:01.590: E/WindowManager(6286): at com.eyepax.rdms.CameraActivity.onActivityResult(CameraActivity.java:127) 
12-06 15:26:01.590: E/WindowManager(6286): at android.app.Activity.dispatchActivityResult(Activity.java:4094) 
12-06 15:26:01.590: E/WindowManager(6286): at android.app.ActivityThread.deliverResults(ActivityThread.java:2905) 
12-06 15:26:01.590: E/WindowManager(6286): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2436) 
12-06 15:26:01.590: E/WindowManager(6286): at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2481) 
12-06 15:26:01.590: E/WindowManager(6286): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1847) 
12-06 15:26:01.590: E/WindowManager(6286): at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3288) 
12-06 15:26:01.590: E/WindowManager(6286): at android.app.ActivityThread.access$1600(ActivityThread.java:132) 
12-06 15:26:01.590: E/WindowManager(6286): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1042) 
12-06 15:26:01.590: E/WindowManager(6286): at android.os.Handler.dispatchMessage(Handler.java:99) 
12-06 15:26:01.590: E/WindowManager(6286): at android.os.Looper.loop(Looper.java:143) 
12-06 15:26:01.590: E/WindowManager(6286): at android.app.ActivityThread.main(ActivityThread.java:4268) 
12-06 15:26:01.590: E/WindowManager(6286): at java.lang.reflect.Method.invokeNative(Native Method) 
12-06 15:26:01.590: E/WindowManager(6286): at java.lang.reflect.Method.invoke(Method.java:507) 
12-06 15:26:01.590: E/WindowManager(6286): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
12-06 15:26:01.590: E/WindowManager(6286): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
12-06 15:26:01.590: E/WindowManager(6286): at dalvik.system.NativeStart.main(Native Method) 

回答

3

及其因爲當裝置轉動至LANDSCAPE模式活動將被重新創建。所以它是拋出窗口壞的標誌。

只需在您的清單中添加以下代碼行即可。

android:configChanges="keyboardHidden|orientation" 
+0

這不應該因爲各種問題而使用。 Android sdk網站上說:「注意:自己處理配置更改可能會使其使用替代資源變得更加困難,因爲系統不會自動爲您應用它。此技術在您必須避免重新啓動時應被視爲最後一招配置更改,並且不推薦用於大多數應用程序。「 – rfsk2010

+0

請看看這個答案:http://stackoverflow.com/questions/456211/activity-restart-on-rotation-android – Hussain

+0

請看看這裏以及,如果你沒有http://developer.android .COM /引導/主題/資源/運行時changes.html – rfsk2010