我正在我的应用程序中运行AsyncTask的一部分工作,因此我希望正确处理配置更改。
使用this link中的代码(这与网站上的代码稍有不同),我能够让AsyncTask在api下的手机上运行屏幕旋转(我使用向后兼容的库来处理片段)。
但是,我随后在我的设备上测试了这个,每次旋转设备时,我都会得到以下错误(通过logcat记录):

08-21 07:33:31.634: W/Surface(488): java.lang.Throwable
08-21 07:33:31.634: W/Surface(488):     at android.view.Surface.<init>(Surface.java:337)
08-21 07:33:31.634: W/Surface(488):     at com.android.server.wm.ScreenRotationAnimation.<init>(ScreenRotationAnimation.java:258)
08-21 07:33:31.634: W/Surface(488):     at com.android.server.wm.WindowManagerService.startFreezingDisplayLocked(WindowManagerService.java:12303)
08-21 07:33:31.634: W/Surface(488):     at com.android.server.wm.WindowManagerService.updateRotationUncheckedLocked(WindowManagerService.java:7697)
08-21 07:33:31.634: W/Surface(488):     at com.android.server.wm.WindowManagerService.updateRotationUnchecked(WindowManagerService.java:7602)
08-21 07:33:31.634: W/Surface(488):     at com.android.server.wm.WindowManagerService.updateRotation(WindowManagerService.java:7565)
08-21 07:33:31.634: W/Surface(488):     at com.android.internal.policy.impl.PhoneWindowManager.updateRotation(PhoneWindowManager.java:6793)
08-21 07:33:31.634: W/Surface(488):     at com.android.internal.policy.impl.PhoneWindowManager$MyOrientationListener.onProposedRotationChanged(PhoneWindowManager.java:760)
08-21 07:33:31.634: W/Surface(488):     at android.view.WindowOrientationListener$ScreenOrientationEventListenerImpl.onSensorChanged(WindowOrientationListener.java:534)
08-21 07:33:31.634: W/Surface(488):     at android.hardware.SystemSensorManager$ListenerDelegate$1.handleMessage(SystemSensorManager.java:256)
08-21 07:33:31.634: W/Surface(488):     at android.os.Handler.dispatchMessage(Handler.java:99)
08-21 07:33:31.634: W/Surface(488):     at android.os.Looper.loop(Looper.java:175)
08-21 07:33:31.634: W/Surface(488):     at com.android.server.ServerThread.run(SystemServer.java:1774)

编辑
当“进度”对话框可见并且在进行配置更改时asynctask正在运行时,会发生这种情况。
作为一项工作,我使用了一种维护服务。
但是,我还是想知道是什么导致了它最初的失败?

最佳答案

这不是我的答案,而是Op's,这是在问题本身中发布的。我已经把它移到这个社区wiki的答案中,并冒昧地“改进”了一点。
我发现这是由于在进行配置更改时运行了ProgressDialog
为了解决这个问题,我现在改为使用AsyncTask

关于android - 应用因配置更改而崩溃,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18350555/

10-12 04:50