我是Android开发的新手。我使用onSaveInstanceState()的overriden版本来保存我自己的应用程序数据。我注意到在函数中没有调用super.onSaveInstanceState(savedInstanceState),代码运行良好。
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
// TODO:
// Save state information with a collection of key-value pairs
// 4 lines of code, one for every count variable
savedInstanceState.putInt(CREATE_KEY, mCreate);
savedInstanceState.putInt(RESUME_KEY, mResume);
savedInstanceState.putInt(RESTART_KEY, mRestart);
savedInstanceState.putInt(START_KEY, mStart);
}我想知道super.onSaveInstanceState(savedInstanceState)是否被隐式调用?
此外,在重写的函数中调用super.onSaveInstanceState(savedInstanceState)的目的是什么。
发布于 2014-02-06 17:35:44
当您调用super.onSaveInstanceState()时,所有View的状态都会被保存。
如果您不调用super方法,您的代码将仍然是work...until..。
...until将您的应用程序放在后台,因为用户按下主页或运行另一个应用程序(通过通知或其他方式),然后Android杀死应用程序的进程,因为它在后台已经有一段时间了(或者它需要资源,或者它只是想让您作为开发人员的生活变得困难)。
然后,当用户返回到您的应用程序时(通过再次启动它,或者从最近的任务列表中选择它),Android将很高兴地为您的应用程序创建一个新的进程,并再次启动您的活动,并将保存的实例包传递给它(现在,由于您忘记调用** View**s,您的活动将不会显示给用户与他上次离开时相同的状态)。它将以初始化(默认、空、启动)状态显示给用户。
这就是为什么在重写这些方法时总是需要调用super.onSaveInstanceState()和super.onRestoreInstanceState()的原因。
发布于 2014-02-06 09:26:09
如果在重写的方法中调用super.onSaveInstanceState(savedInstanceState),它只会从Activity类调用方法onSaveInstanceState(savedInstanceState)。因此,将从Activity类的方法中执行代码。
https://stackoverflow.com/questions/21598610
复制相似问题