调用Activity方法recreate()

时间:2019-05-29 18:10:56

标签: android android-activity marshmallow recreate

我的应用程序需要重新创建其活动才能应用颜色主题更改和其他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()

0 个答案:

没有答案