2013-08-21 139 views
3

我正在我的应用程序的一部分运行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在配置更改时正在运行。

作为解决方法,我使用了IntentService。

但是,我仍然想知道是什么原因导致它失败?

+0

这可能还没有排序,因为我将改变我使用此代码运行对话框的方式 – TimCS

+0

请不要将[解决]放在标题中。相反,请将答案作为答案发布,并将其标记为已接受的答案。 –

回答

0

这不是我的答案,而是OP的问题本身。我已经将它转移到这个社区wiki的答案中,并且冒昧地“改进”了一下。


我发现这是由于ProgressDialog和运行AsyncTask而配置做出更改。

为了解决这个问题,我最终改用了IntentService