android旋转销毁和销毁恢复

1:

Android旋转屏幕不销毁Activity

android:configChanges="keyboardHidden|orientation|screenSize"


可以在Activity 中监听屏幕的旋转

        @Override
        public void onConfigurationChanged(Configuration newConfig) {
            super.onConfigurationChanged(newConfig);
     
          }
————————————————
版权声明:本文为CSDN博主「奔跑的笨鸟」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/helpyou365/article/details/51314781

注意
1、如果是用户自动按下返回键,或程序调用finish()退出程序,是不会触发onSaveInstanceState()和onRestoreInstanceState()的。
2、每次用户旋转屏幕时,您的Activity将被破坏并重新创建。当屏幕改变方向时,系统会破坏并重新创建前台Activity,因为屏幕配置已更改,您的Activity可能需要加载替代资源(例如布局)。即会执行onSaveInstanceState()和onRestoreInstanceState()的。


 

2:

使用onSaveInstanceStateonRestoreInstanceState存储和找回
public class InstanceState2Activity extends AppCompatActivity {

private int mCurrentScore = 11111111;
private int mCurrentLevel = 22222222;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_instance_state2);

// 检查是否正在重新创建一个以前销毁的实例
if (savedInstanceState != null) {
// 从已保存状态恢复成员的值
mCurrentScore = savedInstanceState.getInt("STATE_SCORE");
mCurrentLevel = savedInstanceState.getInt("STATE_LEVEL");
}
else {
// 可能初始化一个新实例的默认值的成员
}
}

public void click(View v) {
if (WidgetUtils.isFastDoubleClick()) {
return;
}
Intent intent;
switch (v.getId()) {
case R.id.btnext:
intent = new Intent(this, InstanceState1Activity.class);
startActivity(intent);
this.finish();
break;
}
}

@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
Log.d("onSaveInstanceState","开始执行");
// 保存用户自定义的状态
savedInstanceState.putInt("STATE_SCORE", mCurrentScore);
savedInstanceState.putInt("STATE_LEVEL", mCurrentLevel);
// 调用父类交给系统处理,这样系统能保存视图层次结构状态
super.onSaveInstanceState(savedInstanceState);
}
public void onRestoreInstanceState(Bundle savedInstanceState) {
Log.d("onRestoreInstanceState","开始执行");
// 总是调用超类,以便它可以恢复视图层次超级
super.onRestoreInstanceState(savedInstanceState);

// 从已保存的实例中恢复状态成员
mCurrentScore = savedInstanceState.getInt("STATE_SCORE");
mCurrentLevel = savedInstanceState.getInt("STATE_LEVEL");
}

}
原文地址:https://www.cnblogs.com/mrray/p/13265718.html