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

时间:2012-06-01 03:43:29

标签: android screen android-activity runtimeexception

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

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

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

这样可以吗?

它是我的应用程序的应用程序名称下的ActivityThread抛出的RuntimeException,但它并没有终止我的应用程序。

1 个答案:

答案 0 :(得分:49)

我刚遇到这个问题,因为我正在调用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);