博客
关于我
onCreate()方法中的参数Bundle savedInstanceState 的意义用法
阅读量:792 次
发布时间: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/

你可能感兴趣的文章
Octotree Chrome插件离线安装
查看>>
OCTO作为美团的高性能服务通信框架,究竟能不能称得上是杀手锏呢?
查看>>
OC中关于给NSString 赋 nil和@""的区别
查看>>
OC字符串方法汇总
查看>>
OC学习6——面相对象的三大特性
查看>>
OC点语法介绍和使用以及@property关键字
查看>>
oc知道经纬度求位置
查看>>
OC高效率52之提供“全能初始化”方法
查看>>
oc--习题
查看>>
oday!POC管理和漏洞扫描小工具
查看>>
ODBC的JAR包和PLSQL
查看>>
ODE网络:一场颠覆RNN的革命即将到来
查看>>
Odin 开源项目教程
查看>>
odoo14配置阿里云免费SSL证书
查看>>
odoo系统局域网及外网访问?快解析内网穿透方案教程
查看>>
Odoo:在选项卡中重用来自另一个模型的TreeView
查看>>
Odoo:如何将SQL语句转换为域
查看>>
ODP.Net Tips
查看>>
OD字符串条件断点 [STRING[ESP+8]] == "123456"
查看>>
OD调试的程序无法处理例外
查看>>