Java Android onRestoreInstanceState在方向更改时未完全更新

Java Android onRestoreInstanceState在方向更改时未完全更新,java,android,android-orientation,onrestoreinstancestate,Java,Android,Android Orientation,Onrestoreinstancestate,我在一个计数程序中遇到了一个问题,该程序显示了一个方法(如onCreate、onStart等)被调用了多少次,当我从Activity1转到Activity2再返回Activity1时,它似乎工作正常,但当我切换方向时,只有mResume增加。 例如,当我启动应用程序并切换方向3次时,结果如下所示: onCreate() calls:1 onStart() calls:1 onResume() calls:4 onRestart() calls:1 另一件有趣的事情是,当我从onRe

我在一个计数程序中遇到了一个问题,该程序显示了一个方法(如onCreate、onStart等)被调用了多少次,当我从Activity1转到Activity2再返回Activity1时,它似乎工作正常,但当我切换方向时,只有mResume增加。 例如,当我启动应用程序并切换方向3次时,结果如下所示:

onCreate() calls:1  
onStart() calls:1  
onResume() calls:4  
onRestart() calls:1
另一件有趣的事情是,当我从onRestoreInstanceState中注释掉mResume、mRestart和mStart时,突然有两个变量更新了mStart和mResume

RestoreInstanceState(Bundle savedInstanceState)上的公共无效{ //始终调用超类,以便它可以恢复视图层次结构 super.onRestoreInstanceState(savedInstanceState); i(标记“输入onRestoreInstanceState()方法”); //从保存的实例还原状态成员 //mResume=savedInstanceState.getInt(恢复键); //mRestart=savedInstanceState.getInt(重启_键); //mStart=savedInstanceState.getInt(开始键); mCreate=savedInstanceState.getInt(创建密钥); 这是完整的代码

公共类ActivityOne扩展活动{
//在重新配置之间保存状态时,将这些用作键
私有静态最终字符串重新启动\u KEY=“重新启动”;
私有静态最终字符串RESUME\u KEY=“RESUME”;
私有静态最终字符串START\u KEY=“START”;
私有静态最终字符串CREATE_KEY=“CREATE”;
//LogCat文档的字符串
私有最终静态字符串TAG=“Lab ActivityOne”;
//生命周期计数器
//待办事项:
//创建名为
//mCreate、mRestart、mStart和mResume
//统计对onCreate()、onRestart()、onStart()和
//onResume()。不应将这些变量定义为静态变量。
//当这些变量的值
//相应的生命周期方法被调用。
int-mCreate;
国际机场;
int-mStart;
int mResume;
//TODO:为每个文本视图创建变量
//命名为mTvCreate、mTvRestart、mTvStart、mTvResume。
//用于显示每个计数器变量的当前计数
文本视图mTvCreate;
文本视图mTvRestart;
文本视图mTvResume;
文本视图mTvStart;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_one);
//TODO:将适当的TextView分配给TextView变量
//提示:通过调用活动的findViewById()访问TextView
//textView1=(TextView)findViewById(R.id.textView1);
mTvCreate=(TextView)findViewById(R.id.create);
mTvRestart=(TextView)findViewById(R.id.restart);
mTvStart=(TextView)findViewById(R.id.start);
mTvResume=(TextView)findViewById(R.id.resume);
按钮launchActivityTwoButton=(按钮)findViewById(R.id.bLaunchActivityTwo);
launchActivityTwoButton.setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
//待办事项:
//启动活动二
//提示:使用上下文的startActivity()方法
//创建一个意图,说明您希望执行的活动
//开始
Intent Intent=新的Intent(v.getContext(),ActivityTwo.class);
//使用意图启动活动
星触觉(意向);
}
});
//以前的状态是否已保存?
如果(savedInstanceState!=null){
//待办事项:
//从保存状态还原计数器的值
//只需要4行代码,每个计数变量一行
mCreate=savedInstanceState.getInt(创建密钥);
mRestart=savedInstanceState.getInt(重启_键);
mStart=savedInstanceState.getInt(开始键);
mResume=savedInstanceState.getInt(恢复键);
}
//发出LogCat消息
i(标记“enteredtheoncreate()方法”);
//待办事项:
//更新适当的计数变量
//通过displayCounts()方法更新用户界面
mCreate+=1;
显示计数();
}
//生命周期回调覆盖
@凌驾
public void onStart(){
super.onStart();
//发出LogCat消息
i(标记“enteredtheonstart()方法”);
//待办事项:
//更新适当的计数变量
//更新用户界面
mStart+=1;
显示计数();
}
@凌驾
恢复时公开作废(){
super.onResume();
//发出LogCat消息
i(标记“enteredtheonresume()方法”);
//待办事项:
//更新适当的计数变量
//更新用户界面
mResume+=1;
显示计数();
}
@凌驾
公共无效暂停(){
super.onPause();
//发出LogCat消息
i(标记“enteredtheonpause()方法”);
}
@凌驾
公共void onStop(){
super.onStop();
//发出LogCat消息
i(标记“enteredtheonstop()方法”);
}
@凌驾
公共void onRestart(){
super.onRestart();
//发出LogCat消息
i(标记“enteredtheonrestart()方法”);
//待办事项:
//更新适当的计数变量
//更新用户界面
mRestart+=1;
显示计数();
}
@凌驾
公共空间{
super.ondestory();
//发出LogCat消息
i(标记“enteredtheondestroy()方法”);
}
@凌驾
SaveInstanceState上的公共无效(Bundle savedInstanceState){
super.onSaveInstanceState(savedInstanceState);
i(标记“输入onSaveInstanceState()方法”);
//T