Android 横向模式下警报框中泄漏的窗口错误

Android 横向模式下警报框中泄漏的窗口错误,android,memory-leaks,alert,Android,Memory Leaks,Alert,我有一个全屏肖像活动,定义如下 在舱单中: <activity android:name=".CameraActivity" android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"> </activity> 此活动的OnCreate方法仅调用一个带有“是”和“否”按钮的警报框。我的问题是,当手机处于横向时,警报框崩溃,我得到下面显示的泄漏窗口错误 12-06 15:26:01.5

我有一个全屏肖像活动,定义如下

在舱单中:

<activity 
    android:name=".CameraActivity"
    android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen">
</activity>
此活动的
OnCreate
方法仅调用一个带有“是”和“否”按钮的警报框。我的问题是,当手机处于横向时,警报框崩溃,我得到下面显示的泄漏窗口错误

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)
12-06 15:26:01.590:E/WindowManager(6286):活动com.eyepax.rdms.CameraActivity已泄漏window com.android.internal.policy.impl.PhoneWindow$DecorView@4058c508原来是加在这里的
12-06 15:26:01.590:E/WindowManager(6286):android.view.WindowLeaked:Activity com.eyepax.rdms.camera活动已泄漏window com.android.internal.policy.impl.PhoneWindow$DecorView@4058c508原来是加在这里的
12-06 15:26:01.590:E/WindowManager(6286):在android.view.ViewRoot.(ViewRoot.java:277)
12-06 15:26:01.590:E/WindowManager(6286):在android.view.WindowManagerImpl.addView(WindowManagerImpl.java:148)
12-06 15:26:01.590:E/WindowManager(6286):在android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
12-06 15:26:01.590:E/WindowManager(6286):在android.view.Window$LocalWindowManager.addView(Window.java:433)
12-06 15:26:01.590:E/WindowManager(6286):在android.app.Dialog.show(Dialog.java:288)
12-06 15:26:01.590:E/WindowManager(6286):在com.eyepax.rdms.CameraActivity$CameraTask.onPreExecute(CameraActivity.java:177)
12-06 15:26:01.590:E/WindowManager(6286):在android.os.AsyncTask.execute(AsyncTask.java:391)
12-06 15:26:01.590:E/WindowManager(6286):位于com.eyepax.rdms.CameraActivity.onActivityResult(CameraActivity.java:127)
12-06 15:26:01.590:E/WindowManager(6286):在android.app.Activity.dispatchActivityResult(Activity.java:4094)
12-06 15:26:01.590:E/WindowManager(6286):在android.app.ActivityThread.deliverResults(ActivityThread.java:2905)
12-06 15:26:01.590:E/WindowManager(6286):在android.app.ActivityThread.performResumeActivity(ActivityThread.java:2436)
12-06 15:26:01.590:E/WindowManager(6286):在android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2481)
12-06 15:26:01.590:E/WindowManager(6286):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1847)
12-06 15:26:01.590:E/WindowManager(6286):在android.app.ActivityThread.handleRunchActivity(ActivityThread.java:3288)
12-06 15:26:01.590:E/WindowManager(6286):在android.app.ActivityThread.access$1600(ActivityThread.java:132)
12-06 15:26:01.590:E/WindowManager(6286):在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1042)
12-06 15:26:01.590:E/WindowManager(6286):在android.os.Handler.dispatchMessage(Handler.java:99)上
12-06 15:26:01.590:E/WindowManager(6286):在android.os.Looper.loop(Looper.java:143)上
12-06 15:26:01.590:E/WindowManager(6286):位于android.app.ActivityThread.main(ActivityThread.java:4268)
12-06 15:26:01.590:E/WindowManager(6286):位于java.lang.reflect.Method.Invokenactive(本机方法)
12-06 15:26:01.590:E/WindowManager(6286):位于java.lang.reflect.Method.invoke(Method.java:507)
12-06 15:26:01.590:E/WindowManager(6286):位于com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
12-06 15:26:01.590:E/WindowManager(6286):位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
12-06 15:26:01.590:E/WindowManager(6286):在dalvik.system.NativeStart.main(本机方法)

这是因为当设备切换到
横向
模式时,将重新创建活动。所以它是在扔坏信物

只需尝试在清单中添加以下代码行即可

android:configChanges="keyboardHidden|orientation"

这是因为当设备转到
横向
模式时,将重新创建活动。所以它是在扔坏信物

只需尝试在清单中添加以下代码行即可

android:configChanges="keyboardHidden|orientation"

由于各种问题,不应使用此选项。安卓sdk网站称“注意:自行处理配置更改会使使用替代资源变得更加困难,因为系统不会自动为您应用这些资源。当您必须避免因配置更改而重新启动时,此技术应被视为最后手段,不建议用于大多数应用程序。“请查看此答案:请也查看此处,以防您因各种问题而未使用此技术。Android sdk网站说”注意:自行处理配置更改会使使用替代资源变得更加困难,因为系统不会自动为您应用这些资源。当您必须避免由于配置更改而重新启动时,此技术应被视为最后手段,并且不推荐用于大多数应用程序。”请查看此答案:如果您没有重新启动,请查看此处