onCreate中的savedInstanceState有何具体作用

最近在查看OnCreate(saveInstanceState)时候,只懂得其中是为了保存当activity失去焦点的时候的状态,却不知其实如何实现的,今天发现一个好文章,和大家分享一下哦。
在activity的生命周期中,只要离开了可见阶段,或者说失去了焦点,activity就很可能被进程终止了!,被KILL掉了,,这时候,就需要有种机制,能保存当时的状态,这就是savedInstanceState的作用。       当一个Activity在PAUSE时,被kill之前,它可以调用onSaveInstanceState()来保存当前activity的状态信息。用来保存状态信息的Bundle会同时传给两个method,即onRestoreInstanceState() and onCreate(). 示例代码如下:

  • package com.myandroid.test;
  • import android.app.Activity;
  • import android.os.Bundle;
  • import android.util.Log;
  • public class AndroidTest extends Activity {
  • private   static  final String TAG = "MyNewLog";
  • /** Called when the activity is first created. */
  • @Override
  • public  void onCreate(Bundle savedInstanceState) {
  • super.onCreate(savedInstanceState);
  • // If an instance of this activity had previously stopped, we can
  • // get the original text it started with.
  • if(null != savedInstanceState)
  • {
  • int IntTest = savedInstanceState.getInt("IntTest");
  • String StrTest = savedInstanceState.getString("StrTest");
  • Log.e(TAG, "onCreate get the savedInstanceState+IntTest="+IntTest+"+StrTest="+StrTest);
  • }
  • setContentView(R.layout.main);
  • Log.e(TAG, "onCreate");
  • }
  • @Override
  • public  void onSaveInstanceState(Bundle savedInstanceState) {
  • // Save away the original text, so we still have it if the activity
  • // needs to be killed while paused.
  • savedInstanceState.putInt("IntTest", 0);
  • savedInstanceState.putString("StrTest", "savedInstanceState test");
  • super.onSaveInstanceState(savedInstanceState);
  • Log.e(TAG, "onSaveInstanceState");
  • }
  • @Override
  • public   void onRestoreInstanceState(Bundle savedInstanceState) {
  • super.onRestoreInstanceState(savedInstanceState);
  • int IntTest = savedInstanceState.getInt("IntTest");
  • String StrTest = savedInstanceState.getString("StrTest");
  • Log.e(TAG, "onRestoreInstanceState+IntTest="+IntTest+"+StrTest="+StrTest);
  • }
  • }
时间: 2024-10-11 08:54:37

onCreate中的savedInstanceState有何具体作用的相关文章

Android在onCreate()中获得控件尺寸

@Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        final ImageView imageView = (ImageView) findViewById(R.id.imageview);              int w = View.Mea

在onCreate()中获取某个View的宽高

我们都知道,在Activity的onCreate()方法中调用View的getWidth()和getHeight()方法时,返回的值都是0,因为Activity调用setContentView方法只是创建了这个View,调用了这个View构造方法而已,其中的onMeasure()方法还没被调用,所以不能知道它的宽高.但是,View有一个公开的方法post(),允许我们通过参数Runnable,在子线程中获取View的宽和高. public class MainActivity extends A

CSS中的:after和:before的作用是什么

CSS中的:after和:before的作用是什么:在当前的页面布局中:after和:before伪对象选择符的使用频率好像并不怎么高,因为低版本IE浏览器并不支持,不过也在清除浮动或者一切其他相关布局中有它们应用的身影.不过随着低版本浏览器使用率的下降,它们出现的频率应该会相应的增加.下面就简单介绍一下这两个伪对象选择符的用法,先看一段代码实例: <!DOCTYPE html> <html> <head> <meta charset=" utf-8&q

css代码中的加号(+)相邻选择器的作用

css代码中的加号(+)相邻选择器的作用:本章节介绍一下css中相邻选择器的作用,此选择器用加号(+)表示.此选择器能够匹配前面的选择器紧邻的兄弟元素.代码实例: <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> &l

EasyUI DataGrid 中字段 formatter 格式化不起作用

今天用 EasyUI datagrid 来做列表,要对一些数据进行格式化,推断某字段状态时,发现 formatter 格式化相应的函数不起作用. <table id="list_data" title="未审核报表" class="easyui-datagrid" style="width: auto;height:350px;" url="" toolbar="#toolbar"

makefile中的all和.PHONY的作用

请编写一个makefile同时编译.链接下面两个程序: 1 main1.c: 2 #include<stdio.h> 3 int main(void) 4 { 5 printf("main1\n"); 6 } 7 main2.c: 8 #include<stdio.h> 9 int main(void) 10 { 11 printf("main2\n"); 12 } [分析]:这里需要生成两个可执行文件main1和main2(两个目标).由于

Android下在onCreate中获取控件的宽度和高度(通过回调)

有时候需要在onCreate方法中知道某个View组件的宽度和高度等信息, 而直接调用View组件的getWidth().getHeight().getMeasuredWidth().getMeasuredHeight().getTop().getLeft()等方法是无法获取到真实值的,只会得到0. 这是因为View组件布局要在onResume回调后完成. 下面提供实现方法: 第一种: onGlobalLayout回调会在布局完成时自动调用 img1.getViewTreeObserver().

虚拟机中几种网络连接的作用

虚拟机中几种网络连接的作用    在我们玩wmware的时候,里面的几种网络连接的模式,大家都知道有什么作用么?其实我们应该了解这些作用. 1.桥接:VM拿到的IP和主机是一个网段的,地位和主机平等,在网络中就像一台独立的主机,可以ping通主机,能够上网. 2.NAT:具体原理不讲,也讲不来.VM里的网络是通过VMnet8 NAT过来的,和主机不是一个网段.就像公司网络一样,公网的IP是172.16.x.x,但对内是192.168.x.x一样,能够上网,不过依赖于主机. 3.仅主机.VM和主机

UITextFieldDelegate协议中各个方法的作用与Xcode中AppDelegate.m中自动生成各个方法的作用(iOS)

UITextFieldDelegate协议中各个方法的作用 控制当前输入框是否能被编辑 - (BOOL)textFieldShouldBeginEditing:(UITextField *)textField 当输入框开始时触发(获得焦点触发) - (void)textFieldDidBeginEditing:(UITextField *)textField 询问输入框是否可以结束编辑(键盘是否可以收回) - (BOOL)textFieldShouldEndEditing:(UITextFiel