Мое приложение должно воссоздать свою активность, чтобы применить изменение цветовой темы и другие изменения графического интерфейса. Это отлично работает, но не со старыми версиями 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()