博客
关于我
onCreate()方法中的参数Bundle savedInstanceState 的意义用法
阅读量:800 次
发布时间:2023-02-23

本文共 2149 字,大约阅读时间需要 7 分钟。

Android开发中,Activity的生命周期管理至关重要。在多个Activity的生命周期中,有一个非常关键的方法叫onCreate。每当Activity被创建时,系统会自动调用onCreate方法。这是Activity生命周期中的一个开端点。但在开发过程中,有一个容易被忽视的参数值——saveInstanceState。这个参数看似简单,实则蕴藏着重要的功能。

来看onCreate方法的定义:public void onCreate(Bundle saveInstanceState)。它的第二个参数saveInstanceState实际上是一个Bundle类型的数据,用于存储Activity的状态。Bundle类似于Map,主要是通过key-value的方式存储数据。从字面上看,saveInstanceState的名字似乎是用来保存Activity实例的状态的,但实际上,它的作用是保存Activity的运行状态。

与onCreate方法配套使用的另一个重要方法是onSaveInstanceState。这个方法的作用是将Activity的当前状态保存下来。当Activity即将被销毁时,系统会自动调用这个方法。通过这个方法,开发者可以将当前的状态信息存储到saveInstanceState中,方便在Activity重新创建时恢复。

比如,在一个游戏应用中,当用户退出游戏时,onSaveInstanceState会将当前游戏的运行状态(比如当前的游戏进度、得分等)存储到saveInstanceState中。当用户重新打开游戏时,onCreate方法会将之前保存的状态数据读取出来,从而让用户可以继续上次未完成的游戏。

下面是一个使用示例,展示了如何在实际开发中使用这两个方法:

import android.app.Activity;import android.os.Bundle;import android.util.Log;public class Test extends Activity {    private static final String TAG = "MyNewLog";    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        // 如果之前保存了状态,获取对应的数据        if (null != savedInstanceState) {            int IntTest = savedInstanceState.getInt("IntTest");            String StrTest = savedInstanceState.getString("StrTest");        }        setContentView(R.layout.main);    }    @Override    public void onSaveInstanceState(Bundle savedInstanceState) {        super.onSaveInstanceState(savedInstanceState);        // 保存当前的状态数据        savedInstanceState.putInt("IntTest", 0);        savedInstanceState.putString("StrTest", "savedInstanceState test");    }    @Override    public void onRestoreInstanceState(Bundle savedInstanceState) {        super.onRestoreInstanceState(savedInstanceState);        int IntTest = savedInstanceState.getInt("IntTest");        String StrTest = savedInstanceState.getString("StrTest");    }}

从上述代码可以看出,通过调用saveInstanceState,我们可以轻松地在Activity的生命周期中实现状态的保存和恢复。这对于开发一个具有 persisting state 的应用来说,非常有用。

举个例子,假设用户正在阅读一本小说,当他/她退出应用时,系统会自动调用onSaveInstanceState方法,将当前阅读的页码等信息存储到saveInstanceState中。当用户重新打开应用时,onCreate方法会读取到之前保存的状态数据,并将阅读继续从上次的页码开始。这让用户无需担心上次阅读的进度丢失。

总之,通过正确使用saveInstanceState,我们可以为用户提供更加流畅的用户体验,同时也为应用程序的稳定性提供了保障。

转载地址:http://gxsfk.baihongyu.com/

你可能感兴趣的文章
oracle ORA-14402 OGG-01296
查看>>
oracle partition by list,深入解析partition-list 分区
查看>>
Oracle PL/SQL Dev工具(破解版)被植入勒索病毒的安全预警及自查通告
查看>>
oracle rac集群的东西之QQ聊天
查看>>
oracle scott趣事
查看>>
oracle script
查看>>
Oracle select表要带双引号的原因
查看>>
Oracle SOA Suit Adapter
查看>>
Oracle Spatial GeoRaster 金字塔栅格存储
查看>>
Oracle spatial 周边查询SQL
查看>>
Oracle Spatial空间数据库建立
查看>>
UML— 活动图
查看>>
oracle sqlplus已停止工作,安装完成客户端后sqlplus报“段错误”
查看>>
oracle SQLserver 函数
查看>>
oracle sql分组(group,根据多个内容分组)在select之后from之前 再进行select查询,复杂子查询的使用
查看>>
Oracle Statspack分析报告详解(一)
查看>>
oracle tirger_在Oracle中,临时表和全局临时表有什么区别?
查看>>
Oracle Validated Configurations 安装使用 说明
查看>>
oracle where 条件的执行顺序分析1
查看>>
oracle 中的 CONCAT,substring ,MINUS 用法
查看>>