我的应用程序需要重新创建其活动才能应用颜色主题更改和其他GUI更改。效果很好,但不适用于较旧的Android版本。
我试图从各种活动回调(例如onActivityResult(),onResume()并使用Runnable)中调用recreate()。
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()