- 浏览: 3460025 次
- 性别:
- 来自: China
文章分类
- 全部博客 (536)
- ajax (1)
- Algorithm (14)
- Android (40)
- CSS/HTML... (2)
- defy (3)
- DesignPattern (2)
- dorado (0)
- Drools (6)
- English/日本語 (7)
- Flex (2)
- Framework (0)
- Google (3)
- hibernate (13)
- homework (3)
- HTML5 (0)
- IDE (29)
- java (45)
- javaee (7)
- Javascript (14)
- java组件 (5)
- jQuery (4)
- jsp (8)
- jsf (2)
- Linux (2)
- lucene (0)
- mysql (6)
- news (3)
- Oracle (8)
- other (4)
- PHP (5)
- Python (0)
- Software Engineering (3)
- spring (7)
- struts1.x (14)
- struts2.x (14)
- strolling in cloud (1)
- subject:javaEnhance (20)
- Tomcat (7)
- validator (3)
- 学习·方法·心得 (8)
- .NET (2)
- vba (6)
- groovy (5)
- grails (2)
- SWT (0)
- big data (1)
- perl (1)
- objective-c (50)
- product (1)
- mac (7)
- ios (188)
- ios-phone (2)
- ios-system (15)
- ios-network (5)
- ios-file (4)
- ios-db (1)
- ios-media (3)
- ios-ui (27)
- ios-openSource (6)
- ios-animation (5)
- ios-drawing (7)
- c (2)
- ios-app (2)
- ios-course (15)
- ios-runtime (14)
- ios-code (8)
- ios-thread (8)
- ios-LBS (2)
- ios-issue (1)
- ios-design (2)
- Jailbreak (2)
- cocos2d (0)
- swift (16)
- ios-framework (4)
- apple watch (4)
- ios-web (1)
- react native (3)
- TVOS (1)
- OpenGL (1)
最新评论
-
xiaobinggg:
...
Session机制详解 -
菜鸟学生会:
Drools规则工作流引擎开发教程网盘地址:http://pa ...
Drools入门-----------环境搭建,分析Helloworld -
wangyudong:
不是很好用,不支持自动化测试RESTful API,也不支持自 ...
Simple REST Client POST使用方法 -
Paul0523:
很棒的一篇文章,感谢楼主分享
Session机制详解 -
啸笑天:
获取原型对象的三种方法<script>functi ...
复习JavaScript面向对象技术
onSaveInstanceState和onRestoreInstanceState触发的时机
- 博客分类:
- Android
当某个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一定会被执行。
总而言之,onSaveInstanceState的调用遵循一个重要原则,即当系统“未经你许可”时销毁了你的activity,则onSaveInstanceState会被系统调用,这是系统的责任,因为它必须要提供一个机会让你保存你的数据(当然你不保存那就随便你了)。
至于onRestoreInstanceState方法,需要注意的是,onSaveInstanceState方法和onRestoreInstanceState方法“不一定”是成对的被调用的,onRestoreInstanceState被调用的前提是,activity A“确实”被系统销毁了,而如果仅仅是停留在有这种可能性的情况下,则该方法不会被调用,例如,当正在显示activity A的时候,用户按下HOME键回到主界面,然后用户紧接着又返回到activity A,这种情况下activity A一般不会因为内存的原因被系统销毁,故activity A的onRestoreInstanceState方法不会被执行。
另外,onRestoreInstanceState的bundle参数也会传递到onCreate方法中,你也可以选择在onCreate方法中做数据还原。
发表评论
-
Android 桌面部件
2011-07-06 19:26 1860桌面部件是一种利用AppWidget框架将应用程序的某个部件放 ... -
Android 实时文件夹
2011-07-06 15:38 2852实时文件夹是一种用来显示由某个ContentProvider提 ... -
android 添加桌面快捷方式
2011-07-05 19:20 13268、在桌面创建快捷方式方法: 方法一:通过长按某一个应用程序的 ... -
Android权限详解
2011-07-04 09:43 2235在Android的设计中,资源的访问或者网络连接,要得到这 ... -
Android权限注解
2011-07-04 09:33 3469Android应用程序在使用很多功能的时候必须在Mainife ... -
ListView使用SimpleAdapter加载网络图片
2011-07-02 19:14 7701ListView是一种常见的布局,通过SimpleAdapte ... -
android:layout_gravity 和 android:gravity 的区别
2011-07-02 19:00 2096gravity 这个英文单词是重心的意思,在这里就表示 ... -
横竖屏切换时不销毁当前activity 和 锁定屏幕
2011-07-02 18:58 3622首先在Mainifest.xml的Activity元素 ... -
strings.xml文件中提供占位符来格式化数据
2011-07-01 16:16 3213有些朋友可能会动态的修改Android中strings. ... -
ANDROID开机动画分析
2011-05-25 15:40 5924Android 2.0 开机动画文件分析。开机动画文件:boo ... -
Android专栏地址,真的不错啊!!!
2011-05-22 20:22 1647第三极: http://disanji.net/cate ... -
A1200入门DIY
2011-05-22 11:40 0A1200入门DIY 2007-04-16 19:33 ... -
android用户界面数据绑定
2011-05-19 21:25 5277当我们想用合适的方式显示并操作一些数据(如数组,链表,数据库等 ... -
emulator: ERROR: the user data image is used by another emulator. aborting
2011-05-19 13:48 2348今天早上起床,运行项目时报错:Error the use ... -
Android Map demo
2011-04-23 22:24 3388AndroidManifest.xml <?xm ... -
Android Map申请key
2011-04-23 22:02 31101. 首先先要获取你的debug keystore位置 ... -
conversion to dalvik format failed with error 1
2011-04-23 21:52 3469android低版本工程(如1.5)放到高版本环境中(如2.2 ... -
Android GPS基础
2011-04-20 22:14 2774package org.example.locationtes ... -
Android API:Activity.managedQuery()
2011-04-20 19:22 2622描述: 获取一个包含指定数据的 Cursor 对 ... -
Android与Internet(获取资源,多线程断点下载,get/post发送,发送xml)
2011-04-07 20:13 6851从Internet获取数据 利用HttpURLConn ...
相关推荐
Android onSaveInstanceState和onRestoreInstanceState触发的时机 Android 中的 onSaveInstanceState 和 onRestoreInstanceState 是两个重要的...了解这两个方法的触发时机和使用方法对于开发者来说是非常重要的。
- 若来电导致Activity A被销毁,则重新启动Activity A时,会经历:`onCreate()` → `onStart()` → `onResume()`,并通过`onSaveInstanceState()`和`onRestoreInstanceState()`恢复之前的状态。 #### 五、总结 ...
2. **实现生命周期方法**:在主Activity中实现所有生命周期回调方法,并在每个方法中添加日志输出语句,以便于观察每个生命周期阶段的触发时机。 #### 三、实验环境配置 为了顺利完成实验,需要准备以下硬件和软件...
这可能涉及到 onSaveInstanceState() 和 onRestoreInstanceState() 方法,或者是使用 Bundle 来保存和恢复数据。 7. **用户体验**:最后,一个好的冰冻特效不仅要技术实现到位,还要考虑用户体验。如何平滑地过渡到...
5. **保存和恢复状态**:在`onSaveInstanceState()`和`onRestoreInstanceState()`方法中,开发者可以保存和恢复Activity的状态,比如用户在文本框中的输入或游戏进度,确保在应用重新启动后能恢复到离开时的状态。...
通过理解每个回调方法的作用和时机,开发者可以优化应用性能,提高用户体验。例如,在适当的回调方法中进行资源释放和状态保存,可以避免内存泄漏和数据丢失的问题。同时,合理利用生命週期中的回调,可以增强应用的...
此外,了解如何处理后台服务(Service)的生命周期,以及广播接收器(BroadcastReceiver)的触发时机,也是Android开发中不可或缺的部分。 总之,深入理解并熟练掌握Android生命周期是成为一名合格Android开发者的...
这可以通过重写`onSaveInstanceState()`和`onRestoreInstanceState()`方法来实现。 综上所述,创建一个仿系统原生相册的图片幻灯片播放器涉及到`SurfaceView`的利用、图片加载与缓存策略、动画效果实现、手势检测、...
- onSaveInstanceState() 和 onRestoreInstanceState() 方法的应用场景分析。 - 活动之间数据传递机制:Intent传值、Bundle封装数据等。 #### 五、Activity与Intent - **知识点介绍**:进一步探索Activity之间的...
- 理解每个生命周期方法的作用和调用时机。 - 在适当的地方处理资源释放等逻辑。 10. **实现生命周期回调方法** - 根据需求重写相应的方法。 - 如`onCreate()`, `onStart()`, `onResume()`等。 11. **保存...
通过重写`onSaveInstanceState()`和`onRestoreInstanceState()`,开发者可以保存和恢复Activity的状态,防止数据丢失。 - **后台服务管理**:在家工作可能涉及更多后台服务的使用,如视频会议。开发者需要确保服务在...