保存activity的state

1.正常结束activity(back键和finish())下的保存数据:
    onPause():用于保存数据操作,     原因:onPause()和onResume()是在activity中必定会执行的。 onStop()不一定会执行。

 

2.系统因为内存不足,导致回收(即销毁)activity或者屏幕旋转时下的保存数据:
       onSaveInstanceState():用于保存数据。   保存的数据可以是edittext中输入的数据,listview中item滑动到的指定位置。

       oncreate():用于获取保存的数据。但是必须判断参数是否为零,不然可能会报空指针异常

       onRestoreInstanceState():   用于获取保存的数据,可以不用判断参数是否为零。

      注意点:屏幕旋转是,系统会销毁当前的activity,然后在重新创建一个新的activity(即重新启动被销毁的activity)。

     

 

 

  
    //(前提:因内存不足,导致系统回收不在栈顶的activity.  即,当用户正常的使用back键结束和finish结束时,不会使用方法)
   //非正常销毁activity前提下,当前activity开始stop时,系统会调用该方法保存activity的状态
  //通常用于保存edittext中输入的内容,或者listview中选中position
 protected void onSaveInstanceState(Bundle outState) {
          outState.putString("onSaveIntanceState", s);
          outState.putInt("position",1);
         super.onSaveInstanceState(outState);
         Log.i("MainActivity", "onSaveInstanceState");
       
}

  

protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);

  edittext=(EditText) findViewById(R.id.editText1);
  tv=(TextView) findViewById(R.id.textView1);

  if(savedInstanceState!=null){
     save1=savedInstanceState.getString("onSaveIntentState");
      int  i=savedInstanceState.getInt("position");
      edittext.setText(save1);
      tv.setText(i);
  }
  Log.i("MainActivity", "onCreate"+savedInstanceState);
   s=edittext.getText().toString();
  


}

 

 //当前activity开始onstart()方法后,系统会调用该方法,用于恢复上一次的状态。
    //与oncreate()方法相比较,不需要判断参数savaeInstanceState是否为null
    protected void onRestoreInstanceState(Bundle savedInstanceState) {
     String s=savedInstanceState.getString("onSaveIntentState");
     int  i=savedInstanceState.getInt("position");
     super.onRestoreInstanceState(savedInstanceState);
      Log.i("MainActivity", "onRestoreInstanceState");
}

转载于:https://my.oschina.net/u/2406195/blog/480778

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值