我有一个活动,当我按“主页”按钮时,我有下一个活动生命周期:
D/States: Login: onPause()
D/States: Login: onStop()
D/States: onSaveInstanceState
D/States: Login: onDestroy()当我再次输入我的申请时,我有:
D/States: Login: onStart()
D/States: Login: onResume()
D/States: Login: onPause()
D/States: Login: onResume()但是没有调用onRestoreInstanceState()方法,也没有保存活动状态。
重写:
@Override
protected void onStart() {
super.onStart();
Log.d(TAG, "Login: onStart()");
}
@Override
protected void onResume() {
super.onResume();
Log.d(TAG, "Login: onResume()");
}
@Override
protected void onPause() {
super.onPause();
Log.d(TAG, "Login: onPause()");
}
@Override
protected void onStop() {
super.onStop();
Log.d(TAG, "Login: onStop()");
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.d(TAG, "Login: onDestroy()");
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putString("login", mEmailView.getText().toString());
outState.putString("password", mPasswordView.getText().toString());
Log.d(TAG, "onSaveInstanceState");
// super.onSaveInstanceState(outState);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
mEmailView.setText(savedInstanceState.getString("login"));
mPasswordView.setText(savedInstanceState.getString("password"));
Log.d(TAG, "onRestoreInstanceState");
}如我所知,onRestoreInstanceState()方法应该在onResume()或onStart()中调用。
我在谷歌的某个地方读到了关于configChanges的文章,同时也在寻找我的问题的答案。我的舱单里没有android:configChanges="keyboardHidden|orientation"或其他android:configChanges。
,但为什么在我的活动中没有调用它呢?解决了。
发布于 2019-11-26 06:25:44
不是复制品..。
好的。
早些时候,当应用程序被最小化时,我需要以任何方式破坏其他一些活动。所以我用了android:noHistory。
当然,我用复制粘贴创建了“登录”活动,并忘记删除noHistory。
发布于 2019-11-25 16:01:55
从正式文件:
这个方法在onStart()之后调用,当活动从以前保存的状态重新初始化时,在savedInstanceState中给出。大多数实现只需使用onCreate(Bundle)来恢复它们的状态,但有时在完成所有初始化或允许子类决定是否使用默认实现之后,在这里这样做是很方便的。此方法的默认实现执行onSaveInstanceState(Bundle)先前冻结的任何视图状态的还原。
由于内存限制,活动在更改方向后重新初始化,或者在被OS杀死后重新创建。
在您的情况下,按下home按钮,活动就会转到停止状态,除非您的手机缺少内存等资源,然后被OS杀死,在这种情况下,将调用onRestoreInstanceState()。
发布于 2019-11-25 16:15:14
当您按“主页”按钮时,您的活动不会被破坏或重新创建。当你从最近的应用中把它带回来的时候,这个活动就会启动,并且不会被重新创建,除非它被操作系统杀死,以便在内存不足的情况下恢复内存。它的行为不出所料
https://stackoverflow.com/questions/59035381
复制相似问题