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");
    }

    }
  • 相关阅读:
    模拟登陆江西理工大学教务系统
    python3爬虫 -----华东交大校园新闻爬取与数据分析
    以selenium模拟登陆12306
    PAT (Basic Level) Practice (中文)1076 Wifi密码 (15 分)
    PAT (Basic Level) Practice (中文)1047 编程团体赛 (20 分)
    PAT (Basic Level) Practice (中文)1029 旧键盘 (20 分)
    PAT (Basic Level) Practice (中文)1016 部分A+B (15 分)
    PAT (Basic Level) Practice (中文)1031 查验身份证 (15 分)
    PAT (Basic Level) Practice (中文)1041 考试座位号 (15 分)
    PAT (Basic Level) Practice (中文)1037 在霍格沃茨找零钱 (20 分)
  • 原文地址:https://www.cnblogs.com/mrray/p/13265718.html
Copyright © 2011-2022 走看看