保存activity状态的方法: onSaveInstanceState()

今天学习了保存activity的状态的一种方法: 使用onSaveInstanceState()方法。


为神马要保存activity的状态?

比如,当我们玩俄罗斯方块的时候,玩到一半想退出,干别的事情去了,然后隔了很久一段时间后突然想玩了,这时打开游戏后,我们希望接着上一次继续玩(尽管上次已经完全退出了),这种情况下可以用onSaveInstanceState( )方法来实现。


怎么做?

重写onSaveInsanceState()方法,把需要保存的信息以bundle的形式保存,然后在onCreate()里取出bundle中的信息,这里就用到了onCreate()方法的参数,刚好是个bundle类型的onSaveInsanceState 参数,终于明白为啥onCreate()方法里有个这样的参数了,哈哈~


上代码,很简单的例子:

public class ActivityLifeCycleActivity extends Activity {

private EditText txt;

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

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

        if( savedInstanceState != null ) {

        String str_info = savedInstanceState.getString("info");

txt.setText(str_info);

Log.i("--- restore state in onCreate() --- ", str_info);

        }

    }

@Override

protected void onSaveInstanceState(Bundle outState) {

String str = txt.getText().toString();

outState.putString("info", ( ( str.equals(null) ) == true ) ? "empty info" : str );

Log.i("--- onSaveInstanceState called --- ", str);

}

}


注意点:

onSaveInsanceState( ) 方法并不是每次退出程序时都会调用!

当按HOME键时,会被调用;当按back键,不会调用。因为按home键退出时,是执行到activity的onStop方法,并没有销毁;而按back键则会直接执行到onDestroy方法,是人为地销毁。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值