Activity中有一个名称叫onCreate的方法。该方法是在Activity创建时被系统调用,是一个Activity生命周期的开始。可是有一点容易被忽视,就是onCreate方法的参数saveInsanceState。一般的程序开发中,很少用到这个参数。
       onCreate方法的完整定义如下:
      public void onCreate(Bundle saveInsanceState){
                super.onCreate(saveInsanceState);
      }
    Bundle类型的数据与Map类型的数据相似,都是以key-value的形式存储数据的。
    从字面上看saveInsanceState,是保存实例状态的。实际上,saveInsanceState也就是保存Activity的状态的。那么,saveInsanceState中的状态数据是从何处而来的呢?下面我们介绍Activity的另一个方法saveInsanceState。
    onsaveInsanceState方法是用来保存Activity的状态的。当一个Activity在生命周期结束前,会调用该方法保存状态。

如下所示:
    public void onSaveInsanceState(Bundle saveInsanceState){
       super.onSaveInsanceState(saveInsanceState);
   }
    在实际应用中,当一个Activity结束前,如果需要保存状态,就在onsaveInsanceState中,将状态数据以key-value的形式放入到saveInsanceState中。这样,当一个Activity被创建时,就能从onCreate的参数saveInsanceState中获得状态数据。
    状态这个参数在实现应用中有很大的用途,比如:一个游戏在退出前,保存一下当前游戏运行的状态,当下次开启时能接着上次的继续玩下去。再比如:电子书程序,当一本小说被阅读到第199页后退出了(不管是内存不足还是用户自动关闭程序),当下次打开时,读者可能已忘记了上次已阅读到第几页了,但是,读者想接着上次的读下去。如果采用saveInstallState参数,就很容易解决上述问题。

使用例子:

import android.app.Activity;

import android.os.Bundle;

import android.util.Log

public class AndroidTest extends Activity {

private static final String TAG = "MyNewLog";

@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)

{//因为Activity的生命周期原因 ,if 语句放着不一定能执行得到 应该结合实际情况

int IntTest = savedInstanceState.getInt("IntTest");

String StrTest = savedInstanceState.getString("StrTest");

}

setContentView(R.layout.main);

}

@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);

}

@Override

public void onRestoreInstanceState(Bundle savedInstanceState) {

super.onRestoreInstanceState(savedInstanceState);

int IntTest = savedInstanceState.getInt("IntTest");

String StrTest = savedInstanceState.getString("StrTest");

}

}

转载于:https://www.cnblogs.com/tfy1332/p/3653539.html

onCreate()方法中的参数Bundle savedInstanceState 的意义用法相关推荐

  1. ArcEngine中IFeatureClass.Search(filter, Recycling)方法中Recycling参数的理解

    转自 ArcEngine中IFeatureClass.Search(filter, Recycling)方法中Recycling参数的理解 ArcGIS Engine中总调用IFeatureClass ...

  2. java分布式对象——远程方法中的参数和返回值+远程对象激活

    [0]README 1)本文文字描述转自 core java volume 2, 旨在学习 java分布式对象--远程方法中的参数和返回值+远程对象激活 的相关知识: [1]远程方法中的参数和返回值 ...

  3. java命令行参数工具_Java方法中的参数太多,第8部分:工具

    java命令行参数工具 在我的系列文章的前七篇文章中,有关处理Java方法中期望的参数过多的内容集中在减少方法或构造函数期望的参数数量的替代方法上. 在本系列的第八篇文章中,我将介绍一些工具,这些工具 ...

  4. java中重载 参数顺序_Java方法中的参数太多,第4部分:重载

    java中重载 参数顺序 期望将过多的参数传递给Java方法的问题之一是,该方法的客户端很难确定它们是否以适当的顺序传递了适当的值. 在以前的文章中,我描述了如何使用自定义类型 , 参数对象和构建器来 ...

  5. java自定义方法参数注解_Java方法中的参数太多,第1部分:自定义类型

    java自定义方法参数注解 我认为构造函数和方法中冗长的参数列表是Java开发中的另一个" 危险信号 ",就逻辑和功能而言,它们不一定是"错误的",但通常暗示当 ...

  6. java 可变参数方法_Java方法中的参数太多,第7部分:可变状态

    java 可变参数方法 在我的系列文章的第七篇中,有关解决Java方法或构造函数中过多参数的问题 ,我着眼于使用状态来减少传递参数的需要. 我等到本系列的第七篇文章来解决这个问题的原因之一是,它是我最 ...

  7. java中方法的命名_Java方法中的参数太多,第5部分:方法命名

    java中方法的命名 在上一篇文章 (有关处理Java方法中过多参数的系列文章的 第4部分 )中,我将方法重载视为一种向客户提供需要较少参数的版本的方法或构造函数的方法. 我描述了该方法的一些缺点,并 ...

  8. java方法带参数返回值_Java方法中的参数太多,第6部分:方法返回

    java方法带参数返回值 在当前的系列文章中,我正在致力于减少调用Java方法和构造函数所需的参数数量,到目前为止,我一直专注于直接影响参数本身的方法( 自定义类型 , 参数对象 , 构建器模式 , ...

  9. java 构建者模式_Java方法中的参数太多,第3部分:构建器模式

    java 构建者模式 在我的前两篇文章中,我研究了如何通过自定义类型和参数对象减少构造函数或方法调用所需的参数数量. 在本文中,我将讨论如何使用构建器模式来减少构造器所需的参数数量,并讨论该模式如何甚 ...

最新文章

  1. LeetCode刷题记录5——441. Arranging Coins(easy)
  2. apt-get 命令介绍
  3. 了不起的程序员们,瞧,这是为你们准备的 2021 年度惊喜!
  4. Java8新特性系列(Lambda)
  5. Calendar的获取变化日期
  6. Leetcode题库234.回文链表(递归 类似双指针 c实现)
  7. messagehub讲解_艾舜杰SAP Data Hub 数据服务总线技术深度讲解
  8. linux lzo 压缩文件,Linux常用压缩和解压命令
  9. vb红绿灯自动切换_VB红绿灯程序.doc
  10. 20-30-010-安装-kafka-manager
  11. linux 脚本 格式化,Shell脚本批量格式化文件名
  12. 人脸识别Python教学
  13. 利用SPSS做数据分析②之数据处理1
  14. 汇编语言转c语言的软件,Arm汇编转换器下载
  15. Python爬虫:通过Selenium库学习如何爬取京东畅销排行榜书籍
  16. python 爬取文章并保存为pdf
  17. 新零售智慧供应链架构
  18. 学习笔记五(蜂鸣器实验按键输入实验)
  19. 利用递归查询部门表,以树(tree)的结构展示返回给前端出来,一般都要有这种需求的
  20. 山东计算机单招考哪些科目,单招考什么内容 单招一般考什么科目

热门文章

  1. org.apache.hadoop 的jar包下载地址
  2. 企业级 SpringCloud 教程 (五)路由网关(zuul)
  3. koa2+koa-views示例
  4. Spring AOP介绍及源码分析
  5. 用ISAPI Filter设置HttpOnly属性
  6. java String和StringBuilder的执行效率
  7. 【089】◀▶ Microsoft Office 技巧
  8. C#GDI绘制自定义字体
  9. 一个用SAM维护多个串的根号特技
  10. 微信小程序 canvas 绘图问题