作者 : 韩曙亮
转载请著名出处 :http://blog.csdn.net/shulianghan/article/details/38297083
一. 相关方法简介
1. 状态保存方法示例
package com.example.octopus_saveinstance;
import android.app.Activity;
import android.os.Bundle;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
}
}
2. 相关方法介绍
(1) onCreate(Bundle savedInstanceState) 方法
Activity 创建时回调 : 该方法会自动传入一个 Bundle 对象, 该 Bundle 对象就是上次被系统销毁时在onSaveInstanceState 或者onRestoreInstanceState 中保存的数据;
-- 注意 : 只有是系统自动回收的时候才会保存 Bundle 对象数据;
-- Bundle 对象来源 : onCreate() 方法中的 Bundle 对象参数, 是在 onSaveInstance() 或者 onRestoreInstanceState() 方法中保存的 Bundle 对象;
.
(2)onSaveInstanceState(Bundle outState) 方法
outState 参数作用 :
-- 数据保存 : Activity 声明周期结束的时候, 需要保存 Activity 状态的时候, 会将要保存的数据使用键值对的形式 保存在 Bundle 对象中;
-- 恢复数据 : 在 Activity 的 onCreate()方法 创建 Activity 的时候会传入一个 Bundle 对象, 这个 Bundle 对象就是这个 outState 参数;
调用时机 : Activity 容易被销毁的时候调用, 注意是容易被销毁, 也可能没有销毁就调用了;
-- 按下Home键: Activity 进入了后台, 此时会调用该方法;
-- 按下电源键 : 屏幕关闭, Activity 进入后台;
-- 启动其它 Activity : Activity 被压入了任务栈的栈底;
-- 横竖屏切换 : 会销毁当前 Activity 并重新创建;
onSaveInstanceState方法调用注意事项 :
-- 用户主动销毁不会调用 : 当用户点击回退键 或者 调用了 finish() 方法, 不会调用该方法;
-- 调用时机不固定 : 该方法一定是在 onStop() 方法之前调用, 但是不确定是在 onPause() 方法之前 还是 之后调用;
-- 布局中组件状态存储 : 每个组件都 实现了 onSaveInstance() 方法, 在调用函数的时候, 会自动保存组件的状态, 注意, 只有有 id 的组件才会保存;
-- 关于默认的super.onSaveInstanceState(outState) : 该默认的方法是实现 组件状态保存的;
(3)onRestoreInstanceState(Bundle savedInstanceState) 方法
方法回调时机 : 在 Activity 被系统销毁之后 恢复 Activity 时被调用, 只有销毁了之后重建的时候才调用, 如果内存充足, 系统没有销毁这个 Activity, 就不需要调用;
-- Bundle 对象传递 : 该方法保存的 Bundle 对象在 Activity 恢复的时候也会通过参数传递到 onCreate() 方法中;
-- 位于生命周期位置吧 : 该方法在 onResume() 方法之前保存信息;
二 代码示例
Activity 主要代码 :
package com.example.octopus_saveinstance;
import android.app.Activity;
import android.os.Bundle;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if(savedInstanceState != null)
System.out.println("onCreate() : " + savedInstanceState.getString("octopus"));
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
System.out.println("onRestoreInstanceState() : " + savedInstanceState.getString("octopus"));
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putString("octopus", "www.octopus.org.cn");
System.out.println("onSaveInstanceState() : save date www.octopus.org.cn");
}
}
运行结果 : 在运行的过程中 旋转屏幕;
I/System.out( 8167): onSaveInstanceState() : save date www.octopus.org.cn
I/System.out( 8167): onCreate() : www.octopus.org.cn
I/System.out( 8167): onRestoreInstanceState() : www.octopus.org.cn
作者:韩曙亮
转载请著名出处:http://blog.csdn.net/shulianghan/article/details/38297083
分享到:
相关推荐
在Android应用开发中,Activity是核心组件之一,它充当了用户界面与应用程序逻辑之间的桥梁。Activity类位于`android.app`包中,从`java.lang.Object`派生,并依次继承了`android.content.Context`、`android.app....
6. **onSaveInstanceState()**: 如果Activity可能被销毁并重新创建,此方法会被调用,以便保存当前状态。 7. **onDestroy()**: 当Activity被永久销毁时调用。这是一个可以进行资源释放的好时机。在示例代码中,没有...
Android应用程序在运行过程中可能会因为各种原因暂时停止或被系统销毁,为了提供良好的用户体验,开发者需要掌握如何有效地保存与恢复Activity的状态。本文将详细介绍Android中用于保存Activity状态的关键方法,并...
在Android应用开发中,Activity是核心组件之一,它负责用户界面的展示和交互。Activity的高级学习涵盖了多个关键概念和技术,对于成为一名熟练的Android开发者至关重要。以下是对Activity高级学习的详细解析: 1. *...
- `saveInstanceState` 参数在Activity重建时用于恢复状态,它是在`onSaveInstanceState(Bundle outState)`方法中保存的,而不是自动生成的。选项D描述错误。 10. **Java继承**: - Java中一个类只能单继承,但...
在Android应用开发中,组件(如Activity、Fragment)的状态保存和恢复是一个重要的功能,它确保了用户界面在设备旋转、应用程序被系统杀死后重启时能够恢复到之前的状态。"Android-Lyra"是一个专为简化这一过程而...
在Android开发过程中,理解应用程序如何启动及Activity的生命周期是非常重要的。这不仅有助于我们更好地管理程序的状态,还能帮助我们在遇到内存泄漏等问题时进行快速定位和解决。 #### ActivityThread `...
如果Activity之前曾被销毁过(例如由于配置变化),则系统会传递保存的状态到savedInstanceState参数中。 ```java @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate...
在Android应用开发中,Activity是用户界面的基本单元,它负责展示屏幕上的内容并处理用户交互。Activity的生命周期是Android开发者必须深入理解的关键概念,因为它直接影响到应用的性能、内存管理和用户体验。本文将...
在Android应用开发中,Activity是Android四大组件之一,它是用户界面的主要载体,承载着与用户交互的任务。深入学习Android Activity,对于理解Android应用的工作机制至关重要。以下是对Activity的详细解析,以及...
SpareParts采用了轻量级的状态保存策略,不同于Bundle用于Activity的onSaveInstanceState()和onRestoreInstanceState()方法。它主要适用于那些不希望或者不适合通过标准保存/恢复机制处理的轻量级状态数据。例如,...
移动终端应用开发题库主要涉及了Android开发的基础知识,包括Activity生命周期、XML布局文件属性、资源操作、视图控件事件、应用程序目录结构、XML布局引用、尺寸单位、布局方式、AdapterView及其子类、ListView使用...
在Android应用开发中,集成高德地图并利用KML(Keyhole Markup Language)文件来展示地理数据是一项常见的任务。KML是一种XML格式,用于描述2D和3D地理空间数据,广泛应用于Google Earth、Google Maps以及高德地图等...
- **知识点概述**:Android应用程序的基本构建块之一是Activity,它是用户与应用交互的主要入口点。了解Activity如何组织对于设计良好的用户界面至关重要。 - **详细解释**: - 选项A正确,即**以栈的方式组织...
在Android开发中,Activity作为四大组件之一,是用户与应用交互的主要界面,其生命周期管理对应用的稳定性和用户体验至关重要。本文将深入解析Android Activity的生命週期,并通过详细说明每个阶段的功能与作用,...
在Android开发中,Activity是应用程序的核心组件之一,用于呈现用户界面并与用户进行交互。面试时,对Activity生命周期的深入理解是考察开发者技能的关键点。本文将详细解析Activity生命周期的各个阶段,以及如何...
在Android开发中,Activity是最基本的应用组件之一,可以将其理解为用户界面的一个屏幕。它提供了用户与应用交互的主要场所。例如,一个应用可能包含多个Activity,每个Activity负责显示不同的界面或功能模块。 **...
在Android应用开发中,Activity是Android系统中的一个核心组件,它是用户界面的载体,负责处理用户的交互事件。这篇文档“Android部分Activity篇”可能详细介绍了关于Android Activity的相关知识点,包括其概念、...
Android系统通过Activity.onSaveInstanceState方法保存状态数据,这些数据会以Bundle的形式传递给Activity.onCreate和onRestoreInstanceState,以便在组件重建时恢复状态。 线程管理是Android应用开发中的另一个...