zoukankan      html  css  js  c++  java
  • 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");
    }

    }
  • 相关阅读:
    MVC--全选反选
    文件上传(表单,Ajax)、文件下载
    Java的一些细节语法(不定时更新。。。)
    并发基础知识
    Linux基本命令操作
    Linux基本操作和自己动手组装服务器
    VMware虚拟机和CentOS系统的安装过程
    安装操作系统
    中间件介绍
    wifi破解
  • 原文地址:https://www.cnblogs.com/mrray/p/13265718.html
Copyright © 2011-2022 走看看