Ошибка утечки из окна оповещения в ландшафтном режиме - PullRequest
0 голосов
/ 06 декабря 2011

У меня полноэкранный режим портретной активности, как указано ниже.

В декларации:

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

и

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

Метод OnCreate этого действия просто вызывает окно предупреждения с кнопками YES и NO. Моя проблема заключается в том, что, когда телефон находится в горизонтальной ориентации, окно оповещения вылетает, и я получаю сообщение об ошибке утечки окна, показанной ниже.

12-06 15:26:01.590: E/WindowManager(6286): Activity com.eyepax.rdms.CameraActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@4058c508 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 com.android.internal.policy.impl.PhoneWindow$DecorView@4058c508 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)

1 Ответ

3 голосов
/ 06 декабря 2011

Это потому, что активность будет воссоздана, когда устройство переключится в режим LANDSCAPE.Так что он выбрасывает окно плохого токена.

Просто попробуйте добавить следующие строки кода в ваш манифест .

android:configChanges="keyboardHidden|orientation"
...