【问题标题】:App crashes on configuration changes应用程序因配置更改而崩溃
【发布时间】:2013-08-21 06:46:41
【问题描述】:

我正在开发我的应用程序的一部分,它运行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。

但是,我还是想知道原来的失败是什么原因造成的?

【问题讨论】:

  • 这可能还没有排序,因为我将使用此代码更改运行对话框的方式
  • 请不要在标题中加上[已解决]。相反,将您的答案发布为答案并将其标记为已接受的答案。

标签: android sdk fragment android-configchanges


【解决方案1】:

这不是我的答案,而是问题本身中发布的 OP。我已将其移至此社区 wiki 答案并冒昧地对其进行了“改进”。


我发现这是由于ProgressDialog 并在进行配置更改时运行AsyncTask。

为了解决这个问题,我现在改用IntentService。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-04
    • 2023-03-14
    • 2019-12-26
    • 2012-05-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多