Нужен обходной путь при вызове метода Activity - PullRequest
0 голосов
/ 29 мая 2019

Мое приложение должно воссоздать свою активность, чтобы применить изменение цветовой темы и другие изменения графического интерфейса. Это отлично работает, но не со старыми версиями Android.

Я пытался вызвать функцию create () из различных обратных вызовов действий, таких как onActivityResult (), onResume () и с использованием Runnable.

protected void onActivityResult(int rc, int sc, Intent data)
{
    super.onActivityResult(rc, sc, data);
    ... ...
    recreate();
}

Как описано Google и другими, вызывающая деятельность разрушается, и создается новый объект. Я отслеживал соответствующие ответные реакции активности, и протокол выглядит следующим образом:

Android 4.4.4 и 6.0.1:

старая активность:

onPause()
onSaveInstanceState()
onStop()
onDestroy()

новый вид деятельности:

onCreate()
onStart()
onResume()
onPause()  <<<<< THIS IS WRONG !!! >>>>>>
onAttachedToWindow()
onCreateOptionsMenu()
// screen off
java.lang.RuntimeException: Performing pause of activity that is not resumed
onPause()
onSaveInstanceState()
// screen on
onResume()

Android 7.1.2 (AOSP) и 8.1 (эмулятор):

старая активность:

onPause()
onSaveInstanceState()
onStop()
onDestroy()

новое занятие:

onCreate()
onStart()
onResume()
onAttachedToWindow()
onCreateOptionsMenu()
// screen off
onPause()
onSaveInstanceState()
// screen on
onResume()
...