Подтвердить что ты не робот

"RuntimeException: выполнение паузы активности, которая не возобновляется"

(Я вижу аналогичный вопрос о stackoverflow, но ответ там не является истинным ответом, а контекст проблемы тоже немного отличается.)

"java.lang.RuntimeException: выполнение паузы активности, которая не возобновляется"

Я разрабатываю игровое приложение (которое использует как обычные представления, так и GLSurfaceView). Если я включаю и выключаю свой экран телефона очень быстро, иногда могу вызвать это исключение (вызывается ActivityThread), но мое приложение работает нормально после исключения. Мое приложение является ландшафтным, и это также правильно установлено в манифесте (включая ориентацию и настройки).

Это нормально?

Это исключение RuntimeException, созданное ActivityThread под именем приложения моего приложения, но оно не прерывает мое приложение.

4b9b3361

Ответ 1

У меня была эта проблема, потому что я вызывал функции activity.recreate() (или .finish() и .startActivity() - в зависимости от версии Android). Конечно, вы будете называть эти функции только потому, что хотите перезагрузить язык, reset ориентацию и подобные вещи, которые вы можете делать только с активным отдыхом.

Вы не можете вызывать эти функции (.finish() или .recreate()) из onResume(). Если вы это сделаете, вы получите упомянутое нефатальное исключение.

Я "решил" проблему, задерживая вызов .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);