Where can be use onSaveInstanceState where parameters are passed different Activity?
This deserves an expanded answer. As the accepted answer states, since API level 21 there's an additional overload for onSaveInstanteState
.
Available since API level 1 (Docs):
void onSaveInstanceState (Bundle outState)
Addition introduced with API level 21 (Docs):
void onSaveInstanceState (Bundle outState, PersistableBundle outPersistentState)
The latter one with the PersistableBundle
is not a replacement of the former one. It is only used when the Activity
attribute R.attr.persistableMode
is set to as persistAcrossReboots
. When such an Activity
is going to be persisted, onSaveInstanceState (Bundle outState, PersistableBundle outPersistentState)
will be called and you receive a PersistableBundle
to store your instance state.
To restore the state of an Activity
with R.attr.persistableMode
set to as persistAcrossReboots
, there's
void onRestoreInstanceState (Bundle savedInstanceState, PersistableBundle persistentState)
Be aware that onRestoreInstanceState (Bundle savedInstanceState)
is not called if the one with the PersistableBundle
is called. I assume the same is true for onSaveInstanceState
, but I haven't checked it and the docs do not mention it at the time of API level 28.
There's also an appropriate overload for onCreate()
.
From API Level 21, onSaveInstanceState()
has a new parameter called that takes object of PersistableBundle
. You can read more about PersistableBundle on Docs
In short,
For API 21 and above
@Override
public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState)
{
super.onSaveInstanceState(outState, outPersistentState);
Log.i("test", "onSaveInstanceState called **********");
}
For API less than 20
@Override
protected void onSaveInstanceState(Bundle outState)
{
super.onSaveInstanceState(outState);
Log.i("test", "onSaveInstanceState with bundle only called");
}