`
javawebsoa
  • 浏览: 417843 次
社区版块
存档分类
最新评论

Android 程式开发:(八)处理屏幕方向的变化 —— 8.2在“变化”中保存状态信息

 
阅读更多

目前为止,我们已经了解到了,当改变屏幕方向的时候,activity将会被销毁,随后被重建。请记住一点,当activity被重建之后,它的当前信息可能消失。当一个activity被kill掉,将会调以下方法中的一个或着两个:

  • onPause() —— 当一个activity被kill掉或被转入后台的时候,这个方法总是被调用。
  • onSaveInstanceState() —— 当一个activity将被kill掉或转入后台的时候,这个方法也会被掉用,就像onPause()方法一样。但是,当一个activity从调用栈中清除的时候(例如按返回键的时候),这个方法不会被调用(注:onPause()方法会被调用),因为已经没有必要保存它的状态了。
简而言之,想要保存activity的状态,那么总是要实现onPause()方法,然后使用你自己的方法去保存状态信息,例如使用数据库,外部或内部的存储。
如果你想简单地保存状态信息,当activity在重新创建的时候,从新加载这些信息。一个简单的方法就是实现onSaveInstanceState()这个方法,因为它提供了一个Bundle对象作为参数,这样,就可以使用这个Bundle对象去保存activity的信息。下面的代码将展示如何使用onSaveInstanceState()方法:
当一个activity被重建,onCreate()方法会首先被调用,然后是onRestoreInstanceState()方法,就是这个方法能够取回刚刚通过onSaveInstanceState()方法保存的信息:

尽管可以使用onSavaInstanceState()方法去保存状态信息,但这也有限制:只能通过Bundle对象去保存你的信息。如果你想保存更多的、更复杂的数据结构,这种方法就显得不太合适了。
可以使用的另外一种方法是使用onRetainNonConfigurationInstance()回调方法。当一个activity因为配置更改(例如屏幕方向的改变)而奖杯销毁的时候,Android系统将调用这个方法。可以这么使用:
把你想保存的东西,通过这个方法返回出来。
可以观察到,这个方法返回一个Object对象,这就允许你返回任何数据类型。如果要提取保存的数据,可以在onCreate()方法中进行提取,使用getLastNonConfigurationInstance()回调方法:
onRetainNonConfigurationInstance()和getLastNonConfigurationInstance(),这两个方法可以允许你随时地保存信息。
例如,当用户下载数据的同时改变了屏幕方法,使用这两个方法去保存数据,总好过重新下载数据吧。


分享到:
评论

相关推荐

    snappy-java-1.1.8.2-API文档-中文版.zip

    赠送jar包:snappy-java-1.1.8.2.jar; 赠送原API文档:snappy-java-1.1.8.2-javadoc.jar; 赠送源代码:snappy-java-1.1.8.2-sources.jar; 赠送Maven依赖信息文件:snappy-java-1.1.8.2.pom; 包含翻译后的API文档...

    snappy-java-1.1.8.2-API文档-中英对照版.zip

    赠送jar包:snappy-java-1.1.8.2.jar; 赠送原API文档:snappy-java-1.1.8.2-javadoc.jar; 赠送源代码:snappy-java-1.1.8.2-sources.jar; 赠送Maven依赖信息文件:snappy-java-1.1.8.2.pom; 包含翻译后的API文档...

    Android技术内幕.系统卷(扫描版)

    《android技术内幕:系统卷》 前言 第1章 准备工作 /1 1.1 深入认识android /2 1.1.1 android的系统构架 /2 1.1.2 android的初始化流程 /5 1.1.3 各个层次之间的相互关系 /8 1.1.4 android系统开发(移植)和应用...

    kettle 8.2相关jar

    kettle jar在官方或很多镜像仓库中都没有,需要手动下载。 本文提供了kettle 8.2相关的5个jar,进行kettle相关插件的开发完成够用了。 如下为本kettle压缩包包含的文件: kettle-core-8.2.0.0-342.jar kettle-dbdialog...

    Google Android SDK开发范例大全(PDF完整版4)(4-4)

    Google Android SDK开发范例大全(完整版)共4个分卷 目录 第1章 了解.深入.动手做. 1.1 红透半边天的Android 1.2 本书目的及涵盖范例范围 1.3 如何阅读本书 1.4 使用本书范例 1.5 参考网站 第2章 Android初体验 2.1...

    Google Android SDK开发范例大全(PDF高清完整版1)(4-1)

    Google Android SDK开发范例大全(完整版)共4个分卷 目录 第1章 了解.深入.动手做. 1.1 红透半边天的Android 1.2 本书目的及涵盖范例范围 1.3 如何阅读本书 1.4 使用本书范例 1.5 参考网站 第2章 Android初体验 2.1...

    Google Android SDK开发范例大全(PDF高清完整版3)(4-3)

    Google Android SDK开发范例大全(完整版)共4个分卷 目录 第1章 了解.深入.动手做. 1.1 红透半边天的Android 1.2 本书目的及涵盖范例范围 1.3 如何阅读本书 1.4 使用本书范例 1.5 参考网站 第2章 Android初体验 2.1...

    屏幕亮度调节软件 8.2.1.4 正式版.zip

    轻松修改屏幕亮度调节 护眼、省电、游戏必备。 1、独家支持屏幕变暗、变亮任意调节! 2、软件模拟,对硬件、系统毫无影响! 3、绿色无毒,软件小巧,操作很简便! 4、保护视力,游戏必备,全热键支持! 5、色彩可...

    Android开发编程从入门到精通——Android程序员必备

    ### Android开发编程从入门到精通——Android程序员必备 #### 一、Android简介 **1.1 什么是Android** Android是一种基于Linux内核的操作系统,主要应用于移动设备如智能手机和平板电脑。它由谷歌公司领导的开放...

    Android 3D游戏开发技术宝典-OpenGL ES 2.0 (吴亚峰) 源代码

    第1章 新一代的王者——android概览 1 1.1 智能手机市场现状 1 1.1.1 五大智能手机操作系统 1 1.1.2 智能手机市场的新星 2 1.2 android平台的特点及未来的趋势 3 1.2.1 全新理念带来的体验风暴 3 ...

    gradle8.2版本(bin+all)

    在给定的压缩包文件中,我们有两个版本的Gradle 8.2:一个是全量版(`gradle-8.2-all.zip`),另一个是精简版(`gradle-8.2-bin.zip`)。了解这两个版本的区别以及如何设置和使用它们对于有效地管理项目构建至关重要...

    android开发揭秘PDF

    2.3 创建第一个Android项目——HeUoAndroid 2.3.1 创建HelloAndroid项目 2.3.2 运行HelloAndroid及模拟器的使用 2.3.3 调试HelloAndroid 2.4 小结 第二部分 基础篇 第3章 Android程序设计基础 3.1 Android程序框架 ...

    传媒行业点评报告:10月广告刊例收入下降8.2%,但双十一、国庆档等因素释放积极影响.zip

    5. **行业应对策略**:面对广告收入下滑,传媒公司需要采取策略性措施,如优化广告资源分配、提升广告效率、开发新型广告形式(如程序化购买、社交媒体营销等)以适应市场变化。同时,与电商平台、品牌商家建立更...

    Google Android SDK开发范例大全的目录

    5.22 动态更改屏幕方向——LANDSCAPE与PORTRAIT 5.23 系统设置更改事件——onConfigurationChanged信息处理 5.24 取得电信网络与手机相关信息——TelephonyManager与android.provider.Settings.System的应用 第6章 ...

    Google Android SDK开发范例大全(完整版附部分源码).pdf

    Google Android SDK开发范例大全(完整版) 包含部分书中源码 目录 第1章 了解.深入.动手做. 1.1 红透半边天的Android 1.2 本书目的及涵盖范例范围 1.3 如何阅读本书 1.4 使用本书范例 1.5 参考网站 第2章 ...

    android gradle-8.2-bin 版本

    在Android开发中,Gradle与Android Studio紧密结合,提供了自动化构建、依赖管理、版本控制以及多模块项目支持等功能。 "android gradle-8.2-bin" 版本指的是Gradle的特定发行版,版本号为8.2,这个版本可能是针对...

    netbeans-8.2

    在NetBeans 8.2中,有几个关键知识点值得深入探讨: 1. **Java开发工具**:NetBeans 8.2为Java开发者提供了全面的工具集,包括代码编辑器、调试器、项目管理器和版本控制系统集成。它支持Java SE(标准版)、Java ...

    Android开发与应用——张荣,原书配套课件

    这是Android开发与应用,原书配套的课件,作者张荣,目录如下。 第1章 Android简介 1.1 手机操作系统 1.2 Android起源 1.3 Android特征 1.4 Android体系结构 1.4.1 应用层 1.4.2 应用框架层 1.4.3 ...

Global site tag (gtag.js) - Google Analytics