文档章节

​onSaveInstanceState() 什么时候调用

 的书法上的
发布于 2014/05/05 16:30
字数 550
阅读 326
收藏 0
点赞 0
评论 0

onSaveInstanceState() 什么时候调用    

 

先看Application Fundamentals上的一段话: 
  Android calls onSaveInstanceState() before the activitybecomes vulnerable to being destroyed by the system, but does not bothercalling it when the instance is actually being destroyed by a user action (suchas pressing the BACK key).   
  从这句话可以知道,当某个activity变得"容易"被系统销毁时,该activity的
onSaveInstanceState()就会被执行,除非该activity是被用户主动销毁的,例如当用户按BACK键的时候。   
  注意上面的双引号,何为"容易"?意思就是说该activity还没有被销毁,而仅仅是一种可能性。这种可能性有哪些?通过重写一个activity的所有生命周期的onXXX方法,包括onSaveInstanceState()和onRestoreInstanceState() 方法,我们可以清楚地知道当某个activity(假定为activity A)显示在当前task的最上层时,其onSaveInstanceState()方法会在什么时候被执行,有这么几种情况:   
  (1)、当用户按下HOME键时。 
  这是显而易见的,系统不知道你按下HOME后要运行多少其他的程序,自然也不知道activity A是否会被销毁,因此系统会调用onSaveInstanceState(),让用户有机会保存某些非永久性的数据。以下几种情况的分析都遵循该原则   
  (2)、长按HOME键,选择运行其他的程序时。   
  (3)、按下电源按键(关闭屏幕显示)时。   
  (4)、从activity A中启动一个新的activity时。   
  (5)、屏幕方向切换时,例如从竖屏切换到横屏时。   
  在屏幕切换之前,系统会销毁activity A,在屏幕切换之后系统又会自动地创建activity A,所以onSaveInstanceState()一定会被执行,且也一定会执行onRestoreInstanceState()。   
  总而言之,onSaveInstanceState()的调用遵循一个重要原则,即当系统存在“未经你许可”时销毁了我们的activity的可能时,则onSaveInstanceState()会被系统调用,这是系统的责任,因为它必须要提供一个机会让你保存你的数据(当然你不保存那就随便你了)。如果调用,调用将发生在onPause()或onStop()方法之前。(虽然测试时发现多数在onPause()前

© 著作权归作者所有

共有 人打赏支持
粉丝 5
博文 72
码字总数 58940
作品 0
东城
Android中InstanceState()使用详解

本文介绍Android中关于Activity的两个神秘方法:onSaveInstanceState() 和 onRestoreInstanceState(),并且在介绍这两个方法之后,再分别来实现使用InstanceState保存和恢复数据功能、Andro...

colorlesswind ⋅ 2016/09/23 ⋅ 0

onSaveInstanceState和onRestoreInstanceState

本文介绍Android中关于Activity的两个神秘方法:onSaveInstanceState() 和 onRestoreInstanceState(),并且在介绍这两个方法之后,再分别来实现使用InstanceState保存和恢复数据功能、 Andr...

枫兮兮 ⋅ 2014/02/25 ⋅ 0

Android InstanceState详解

一、onSaveInstanceState 1. 代码示例: 当屏幕的方向发生了改变, Activity会被摧毁并且被重新创建,如果你想在Activity被摧毁前缓存一些数据,并且在Activity被重新创建后恢复缓存的数据。...

恰同学少年 ⋅ 2015/07/27 ⋅ 0

android学习笔记——onSaveInstanceState的使用

//保存当前所有的棋子的位置,在返回应用的时候,重新显示@Overrideprotected Parcelable onSaveInstanceState(){Bundle bundle=new Bundle();bundle.putParcelable(INSTANCE, super.onSaveI......

小白杨啦啦 ⋅ 2016/05/03 ⋅ 0

Android开发之InstanceState详解

本文介绍Android中关于Activity的两个神秘方法:onSaveInstanceState和onRestoreInstanceState。 关于这两个方法,一些朋友可能在Android开发很少用到,但在有时候掌握其用法会帮我们起到比较...

带梦想一7飞 ⋅ 2012/08/17 ⋅ 0

onRestoreInstanceState和onSaveInstanceState数据恢复与保存

测试方式很简单,只要想象一下就明白了: 经测试,onSaveInstanceState会被调用的条件是: 条件一.从当前activityA启动ActivityB时,在onPause之后onStop之前调用, 条件二.当前activtiy未被主...

IamOkay ⋅ 2014/10/26 ⋅ 0

Android onSaveInstanceState和onRestoreInstanceState触发的时机

先看Application Fundamentals上的一段话: Android calls onSaveInstanceState() before the activity becomes vulnerable to being destroyed by the system, but does not bother calling......

鉴客 ⋅ 2011/12/19 ⋅ 1

android笔记--保存和恢复activity的状态数据

一般来说, 调用onPause()和onStop()方法后的activity实例仍然存在于内存中, activity的所有信息和状态数据不会消失, 当activity重新回到前台之后, 所有的改变都会得到保留.但是当系统内存不足...

Thanks ⋅ 2014/06/02 ⋅ 0

Android Architecture组件之ViewModel

原文地址:https://android.jlelse.eu/android-architecture-components-viewmodel-e74faddf5b94 ViewModel最重要的作用就是为UI提供和管理数据。 介绍 我猜想你肯定有一些Activity,也许你还...

尺锤 ⋅ 2017/12/12 ⋅ 0

android onSaveInstanceState

无意中留意到 onCreate(Bundle savedInstanceState) ,savedInstanceState究竟是什么,于是上网搜了搜 当某个activity变得“容易”被系统销毁时,该activity的onSaveInstanceState就会被执行,...

Jonson ⋅ 2014/04/16 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Spring Bean基础

1、Bean之间引用 <!--如果Bean配置在同一个XML文件中,使用local引用--><ref bean="someBean"/><!--如果Bean配置在不同的XML文件中,使用ref引用--><ref local="someBean"/> 其实两种......

霍淇滨 ⋅ 21分钟前 ⋅ 0

05、基于Consul+Upsync+Nginx实现动态负载均衡

1、Consul环境搭建 下载consul_0.7.5_linux_amd64.zip到/usr/local/src目录 cd /usr/local/srcwget https://releases.hashicorp.com/consul/0.7.5/consul_0.7.5_linux_amd64.zip 解压consu......

北岩 ⋅ 24分钟前 ⋅ 0

Webpack 4 api 了解与使用

webpack 最近升级到了 v4.5+版 01 官方不再支持 node4 以下版本 官方不再支持 node4 以下版本官方不再支持 node4 以下的版本,所以如果你的node版本太低,先开始升级node吧!话说node10 ...

NDweb ⋅ 33分钟前 ⋅ 0

使用nodeJs安装Vue-cli

Vue脚手架就是一个Vue框架开发环境 脚手架的意思是帮你快速开始一个vue的项目,也就是给你一套vue的结构,包含基础的依赖库,只需要 npm install就可以安装,让我们不需要为了编辑或者一些其...

木筏笔歆 ⋅ 今天 ⋅ 0

【微信小程序开发实战】0x00.开发前准备工作

写在开始 本人资深后端码农一枚,近期项目需求,接触到了微信小程序,将学习过程整理成文分享给小伙伴们,由于是边学边整理难免有表述不对的地方,望大家及时指正,感谢。 本人微信号: dream...

dreamans ⋅ 今天 ⋅ 0

linux redis的安装和php7下安装redis扩展

安装redis服务器 (1)下载安装包: $ wget http://download.redis.io/releases/redis-2.8.17.tar.gz (2)编译程序: $ tar xzf redis-2.8.17.tar.gz $ cd redis-2.8.17 $ make $ cd src &&......

concat ⋅ 今天 ⋅ 0

Guava EventBus源码解析

一、EventBus使用场景示例 Guava EventBus是事件发布/订阅框架,采用观察者模式,通过解耦发布者和订阅者简化事件(消息)的传递。这有点像简化版的MQ,除去了Broker,由EventBus托管了订阅&...

SaintTinyBoy ⋅ 今天 ⋅ 0

http怎么做自动跳转https

Apache 版本 如果需要整站跳转,则在网站的配置文件的<Directory>标签内,键入以下内容: RewriteEngine on RewriteCond %{SERVER_PORT} !^443$ RewriteRule ^(.*)?$ https://%{SERVER_NAME......

Helios51 ⋅ 今天 ⋅ 0

Python爬虫,抓取淘宝商品评论内容

作为一个资深吃货,网购各种零食是很频繁的,但是能否在浩瀚的商品库中找到合适的东西,就只能参考评论了!今天给大家分享用python做个抓取淘宝商品评论的小爬虫! 思路 我们就拿“德州扒鸡”...

python玩家 ⋅ 今天 ⋅ 0

MySQL 内核深度优化

MYSQL数据库适用场景广泛,相较于Oracle、DB2性价比更高,Web网站、日志系统、数据仓库等场景都有MYSQL用武之地,但是也存在对于事务性支持不太好(MySQL 5.5版本开始默认引擎才是InnoDB事务...

java高级架构牛人 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部