【发布时间】:2014-06-09 23:39:13
【问题描述】:
我正在尝试测试 onRestoreInstanceState 方法以及何时(确切地)调用它。所以我遵循了这些步骤:
- 开始我的活动。
onCreate -- > onStart --> onResume被调用。 - 按模拟器上的主页按钮。
onPause --> onSaveInstanceState --> onStop被调用。 - 单击启动器中的图标并再次启动我的活动。
onRestart --> onStart --> onResume被调用。
我的java代码:
package com.test.demostate.app;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.util.Log;
public class MainActivity extends ActionBarActivity {
private int visiters=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.d("TAG","onCreate");
}
@Override
protected void onPause() {
super.onPause();
Log.d("TAG","onPause");
}
@Override
protected void onStop() {
super.onStop();
Log.d("TAG","onStop");
}
@Override
protected void onStart() {
super.onStart();
Log.d("TAG","onStart");
}
@Override
protected void onRestart() {
super.onRestart();
Log.d("TAG","onRestart");
}
@Override
protected void onResume() {
super.onResume();
visiters++;
Log.d("TAG","onResume");
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt("visiters",visiters);
Log.d("TAG",visiters+" visiters was saved ");
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
visiters=savedInstanceState.getInt("visiters");
Log.d("TAG",visiters+" visiters was restored");
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.d("TAG","onDestroy");
}
}
来自文档:Instead of restoring the state during onCreate() you may choose to implement onRestoreInstanceState(), which the system calls after the onStart() method .
所以调用onRestoreInstanceState
- Activity 被销毁后
onPause --> onStop --> onDestroy然后onCreate --> onRestoreInstanceState --> onResume(例如由于屏幕旋转) - 活动停止后
onPause --> onStop --> onRestart --> onStart --> onRestoreInstanceState --> onResume(例如由于主页图标按下)
但是为什么在 onStart 之后不调用呢?
谢谢
【问题讨论】:
-
"..系统在 onStart() 方法之后调用。" - 请写出与问题相关的标题。
-
@user2864740 ,我的问题标题已编辑“为什么不是...”
-
在第二步之后,再次按下主页按钮并点击您打开的应用程序。尝试在智能手机上执行您的应用程序。
-
@Lucas Santos 还是不行
-
尝试改变方向而不是按主页按钮。
标签: android