android程序活动生存期理解

简介: 一、完整生存期:     范围:是指对onCreate方法的第一次调用和对onDestroy方法的最后一次调用之间的时间范围(在某些特定的情况下onDestroy方法可能没调用活动进程就被终止了)     过程:onCreate接收包含UI状态的Bundle,改对象是最后一次调用onSaveInstanceState时保存的。

一、完整生存期:

    范围:是指对onCreate方法的第一次调用和对onDestroy方法的最后一次调用之间的时间范围(在某些特定的情况下onDestroy方法可能没调用活动进程就被终止了)

    过程:onCreate接收包含UI状态的Bundle,改对象是最后一次调用onSaveInstanceState时保存的。恢复上次一次的界面状态既可以通过onCreate方法也可以通过,onRestoreInstanceState来实现

    注意:在android中最好避免创建短期的对象,对象的快速创建和销毁会导致额外的垃圾收集过程,如果创建的对象时有规律的建议只在onCreate生成一次。

    经历次数:一次

二、可见生存期

    范围:是指调用onStart和onStop之间的那段时间,在这段时间活动可能是没有焦点的或者是可能被部分遮挡了(Android运行时可能不调用onStop而终止可见生存周期的活动)

    过程:onCreate之后就会调用onStart,当Activity处于停止状态,即他被一个新的Activity覆盖掉了,用户通过Activity回到前一个Activity时就会调用onRestart  然后调用onStart 然后再调用onR

    经历次数:多次,Activity会在前台和后台来回切换

三、活动生存期

   范围:是指onRsume及其对应的onPause之间那段时间

   过程:调用onStar后调用onRestar,然后就会调用onResume,当一个新的Activity被打开后,原来的Activity就会调用onPause,如果新打开的Activity并没有完全覆盖原来的Activity或者新的Activity是半透明状态原来的Activity还可见那么只会调用onPause使得Activity处于可见生存期,否则继续往下调用onStop。在onPause之前会调用onSaveInstaceState,用于保存UI状态,这个UI状态会传递给onCrate和onRestoreInstanceState

   注意:在活动生存期内可以安全的假设onSatveInstance和onPause会被调用,大部分活动至少需重写onPause方法来提交未保存的改动,因为在onPause之外活动可能在没有任何警告的情况下被终止。在活动不在前台的时候也可以根据应用程序的架构,选择挂起线程、进程或者广播接收器。onResume方法可以是轻量级的,因为要求加载UI状态的时候可以由onCreate和onRestoreIntance方法处理。使用onResume可以重新注册已经使用onPause停止的广播接收器或者其他进程。onPause最好也是轻量级的因为下一个要显示到前台的activity的onRsume要等当前activity的onPause返回后才执行。

四、其他

   1、当Activity处于暂停或停止状态下,操作系统内存缺乏可能会销毁Activity。或者其他意外突发情况,Activity被操作系统销毁,内存回收时onSaveInstanceState会被调用,但是当用户主动销毁一个Activity时(例如按返回键)onSaveInstanceState就不会被调用,onSaveInstanceState适合保存一些临时性的数据,onPause适合保存一些持久化的数据

  2、onRestoreInstanceState是在onStart和onPostCreate之间执行用户恢复UI状态

  3、如果数据比较重要但是数据在运算中则应该缓存他们,如果以及运输结束有结果了则应该对他们进行持久化操作

  4、只要Activity被覆盖一定会调用onPause方法,只要Activity重新回到前台一定会调用onResume方法

  5、开发文档中的资料:

参考资料:

  android开发文档

  http://wenku.baidu.com/view/b387f9d9ce2f0066f5332282.html

  Professional Android 2 Application Development P74~78

 

 

相关文章
|
7月前
|
设计模式 算法 前端开发
Android面经分享,失业两个月,五一节前拿到Offer,设计思想与代码质量优化+程序性能优化+开发效率优化
Android面经分享,失业两个月,五一节前拿到Offer,设计思想与代码质量优化+程序性能优化+开发效率优化
|
7月前
|
Linux Android开发
测试程序之提供ioctl函数应用操作GPIO适用于Linux/Android
测试程序之提供ioctl函数应用操作GPIO适用于Linux/Android
132 0
|
数据采集 编解码 Ubuntu
Android流媒体开发之路二:NDK C++开发Android端RTMP直播推流程序
Android流媒体开发之路二:NDK C++开发Android端RTMP直播推流程序
281 0
|
存储 传感器 定位技术
《移动互联网技术》 第四章 移动应用开发: Android Studio开发环境的使用方法:建立工程,编写源程序,编译链接,安装模拟器,通过模拟器运行和调试程序
《移动互联网技术》 第四章 移动应用开发: Android Studio开发环境的使用方法:建立工程,编写源程序,编译链接,安装模拟器,通过模拟器运行和调试程序
193 0
|
Java Android开发 开发者
1024程序节|Android框架之一 BRVAH【BaseRecyclerViewAdapterHelper】使用demo
BRVAH是一个强大的RecyclerAdapter框架(什么是RecyclerView?),它能节约开发者大量的开发时间,集成了大部分列表常用需求解决方案。为什么会有它?请查看「Android开源框架BRVAH由来篇」该框架于2016年4月10号发布的第1个版本到现在已经一年多了,经历了800多次代码提交,140多次版本打包,修复了1000多个问题,获得了9000多star,非常感谢大家的使用以及反馈。
251 0
|
6月前
|
安全 Java Android开发
05. 【Android教程】Android 程序签名打包
05. 【Android教程】Android 程序签名打包
70 1
|
5月前
|
Oracle Java 关系型数据库
Android studio 安装以及第一个程序
Android studio 安装以及第一个程序
135 0
|
6月前
|
Java Android开发
程序与技术分享:Android使用Dagger注入的方式初始化对象的简单使用
程序与技术分享:Android使用Dagger注入的方式初始化对象的简单使用
152 0
|
6月前
|
安全 网络协议 网络安全
程序与技术分享:Android应用安全之数据传输安全
程序与技术分享:Android应用安全之数据传输安全
|
7月前
|
XML Java Android开发
如何美化android程序:自定义ListView背景
如何美化android程序:自定义ListView背景
69 2