android中的activity的状态的保存:

本文介绍如何在Android应用中保存和恢复用户数据,防止因电话、屏幕旋转或Home键操作导致的数据丢失。通过使用onSaveInstanceState和onPause方法保存数据到Bundle或SharedPreferences。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当用户在使用软件的时候,如果此时更高权限的应用突然发生响应(如:电话),此时用户的当前在用户的应用程序就会被放到后台。当用户在结束完更高权限的应用时,在回到此应用时:

1.如果此应用被系统回收了,则系统会重新加载这个应用程序,导致数据的丢失。
此时可以使用如下的代码保存用户的activity的状态:


      /**
      * 此方法用于在系统想要释放当前的Activity时,保存Activity的状态
      */
      @Override
      protected void onSaveInstanceState(Bundle outState) {

          System. out.println( "------------------onSaveInstanceState" );
            /**
            * 使用Bundle 保存当前的数据
            */

            if (outState != null) {
                outState.putString( this. TAGedit.getText().toString());
           }

            super.onSaveInstanceState(outState);
     }

此时数据已经保存在Bundle 对象中了。

在系统加载时调用:
@Override
      public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
           setContentView(R.layout. activity_main);

            edit = (EditText) findViewById(R.id. edit);

            if (savedInstanceState != null) {

                 edit.setText(savedInstanceState.getString( this. TAG));
           }

            if (savedInstanceState != null) {
                System. out.println( "-----------------------onCreate()" );
           }
     }

这样在应用程序被重新加载时,也会回到上次的数据状态。

2.当用户进行横屏、竖屏、Back、Home 操作时,也会使当前的Activity的Pause,然后resume。

   此时数据也会照成丢失。可以调用如下的方法进行:

      /**
      * 保存当前的数据,用于用户点击back 或者是home 键时
      */
      @Override
      protected void onPause() {
          System. out.println( "--------------------------onPause" );
            super.onPause();

            this.getPreferences( MODE_PRIVATE).edit()
                     .putString( this. TAG,edit.getText().toString()).commit();
     }

      /**
      * 恢复数据,用于用户点击了back 或者是 home按键时
      */
      @Override
      protected void onResume() {
          System. out.println( "--------------------------onResume" );
            super.onResume();

           edit.setText( this.getPreferences( MODE_PRIVATE).getString( this. TAG""));
     }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值