29

(我在 stackoverflow 上看到了一个类似的问题,但没有真正的答案,而且问题的上下文也有点不同。)

“java.lang.RuntimeException:执行未恢复的活动暂停”

我开发了一个游戏应用程序(它使用普通视图和 GLSurfaceView)。如果我非常快速地打开和关闭手机显示屏,有时会导致此异常(由 ActivityThread 引发),但异常后我的应用程序运行正常。我的应用程序是横向应用程序,并且在清单中也正确设置(包括方向和配置更改)。

这个可以吗?

这是 ActivityThread 在我的应用程序名称下抛出的 RuntimeException,但它不会终止我的应用程序。

4

2 回答 2

54

我刚刚遇到了这个问题,因为我正在调用 activity.recreate() (或 .finish() 和 .startActivity() - 取决于 android 版本)。当然,你只会调用这些函数,因为你想重新加载语言、重置方向和类似的东西,你只能用活动娱乐来做。

但是,您不能从 onResume() 调用这些函数(.finish() 或 .recreate())。如果这样做,您将收到提到的非致命异常。

我通过将 .recreate() 调用延迟一毫秒来“解决”这个问题,以便活动得到正确恢复,然后才被杀死。

  Handler handler = new Handler();
  handler.postDelayed(new Runnable()
  {
    @Override
    public void run()
    {
      log.i("TX.refresh", "Switching to %s from %s", lang, lang);
      if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB)
      {
        ctx.finish();
        ctx.startActivity(ctx.getIntent());
      } else ctx.recreate();
    }
  }, 1);
于 2013-02-04T06:30:45.850 回答
0

请在清单文件中使用此代码

<activity
    android:name=".YourActivity"
    android:configChanges="orientation|keyboardHidden|screenSize"
    android:screenOrientation="portrait" >
</activity>
于 2021-11-16T13:41:59.893 回答