(我在stackoverflow上看到一个类似的问题,但答案不是真正的答案,问题的上下文也有点不同。)
" java.lang.RuntimeException:执行暂停未恢复的活动"
我开发了一个游戏应用程序(使用普通视图和GLSurfaceView)。如果我快速打开和关闭手机显示非常,我有时可能会导致此异常(由ActivityThread引发),但我的应用程序在异常后正常运行。我的应用程序是横向应用程序,它也在清单中正确设置(包括方向和配置更改)。
这样可以吗?
它是我的应用程序的应用程序名称下的ActivityThread抛出的RuntimeException,但它并没有终止我的应用程序。
答案 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);