Android活动的生命周期
掌握活动的生命周期对任何Android开发者来说都非常重要,当你深入理解活动的生命周期之后,就可以写出更加连贯流畅的程序。
-----------------------------------------------返回栈-----------------------------------------------------------
Android的活动是可以层叠的。每启动一个新活动,就会覆盖在原有活动之上,然后点击Back键会销毁最上面的活动,下面的一个活动就会重新显示出来。
其实Android是使用任务(Task)来管理活动的,一个任务就是一组存放在栈里的活动的集合,这个栈也被称为返回栈(Back Stack)。
在默认情况下,每当我们启动了一个新的活动,它会在返回栈中入栈,并处于栈顶的位置。而每当我们按下Back键或调用finish()方法去销毁一个活动时,处于顶栈的活动就会出栈,这时前一个入栈的活动就会重新处于栈顶的位置。
系统总是会显示处于栈顶的活动给用户。
-----------------------------------------------活动状态------------------------------------------------
运行状态:当一个活动位于返回栈的栈顶时,这时活动就处于运行状态。
暂停状态:当一个活动不再处于栈顶位置,但仍然可见时,这时活动就进入暂停状态。内存极低情况下,系统才会考虑回收这种活动。
停止状态:当一个活动完全不可见时,就进入了停止状态。系统仍然会为这种活动保存相应的状态和成员变量,但并不可靠,仍有可能被系统回收。
销毁状态:当一个活动从返回栈中移除之后就变成了销毁状态。系统会回收此状态的活动,从而保证手机内存充足。
---------------------------------------------活动的生存期------------------------------------------------
Activity类的七个回调方法,覆盖了活动生命周期的每一个环节。
1.onCreate()————————初始化操作,活动第一次被创建时调用
2.onStart()—————————启动操作,活动由不可见变为可见时调用
3.onResume()————————交互操作,活动准备与用户交互时调用
4.onPause()—————————暂停操作,系统准备启动或恢复另一个活动时调用
5.onStop()——————————停止操作,活动完全不可见的时候调用
6.onDestroy()————————回收操作,活动被销毁之前调用
7.onRestart()————————重启操作,活动由停止变为运行状态之前调用
以上方法除了onRestart()方法,其他都是对应的,从而又可以将活动分为三种生存周期
完整生存期:
活动onCreate()方法和onDestroy()方法之间所经历的,就是完整生存周期。一般情况下,一个活动会在onCreate()方法中完成各种初始化操作,而在onDestroy()方法中完成释放内存的操作。
可见生存期:
活动在onStart()方法和onStop()方法之间所经历的,就是可见生存周期。在可见生存期内,活动对于用户总是可见的,即便有可能无法和用户进行交互。可以通过这两种方法,合理的管理那些对用户可见的资源。
前台生存期:
活动在onResume()方法和onPause()方法之间所经历的,就是前台生存周期。在前台生存期内,活动总是处于运行状态的,此时的活动是可以和用户进行交互的,和用户接触最多的也就是这个状态下的活动了。
Android活动的生命周期的更多相关文章
- Xamarin.Android活动的生命周期
一.前言 用过Android手机的人一定会发现一种现象,当你把一个应用置于后台后,一段时间之后在打开就会发现应用重新打开了,但是之前的相关的数据却没有丢失.可以看出app的“生命”是掌握在系统手上的, ...
- android 活动的生命周期
掌握活动的生命周期非常重要,因为一个正常的android应用,会有很多的活动,如何在这些活动之间进行切换.数据的交互等,就经常会用到活动的生命周期这一块的知识.可以说,只要掌握了活动的生命周期,才能更 ...
- 记不住的Android活动的生命周期
Activity基类定义了管理一个互动的生命周期的一系列事件. Activity生命周期的一系列事件onCreate()——当前活动首次被创建时使用.onStart()——当前活动对用户可见时调用.o ...
- android ——活动的生命周期
在其生命周期内,activity在运行.暂停和停止三种可能的状态间进行转换,不同状态之间互相转换的时候的调用不同的方法,重写这些方法就能在活动切换,被销毁时保存或传输数据,在被启动.被切换出来时接收数 ...
- Android笔记——活动的生命周期
一.活动的重要性 掌握活动的生命周期对任何 Android 开发者来说都非常重要,当你深入理解活动的生命周期之后,就可以写出更加连贯流畅的程序,并在如何合理管理应用资源方面,你会发挥的游刃有余.你的应 ...
- Android学习笔记(五)——活动的生命周期
//此系列博文是<第一行Android代码>的学习笔记,如有错漏,欢迎指正! 为了能写出流畅连贯的程序,我们需要了解一下活动的生命周期. 一.返回栈 Android 中的活动是可以层叠的. ...
- Android studio教程:[5]活动的生命周期
想要学好安卓开发,就必须理解安卓软件的生命周期,明白一个活动的创建.启动.停止.暂停.重启和销毁的过程,知道各个阶段会调用什么函数进行处理不同的情况,这里我就通过一个简单的例子让大家明白一个活动的生命 ...
- Android基础知识05—活动的生命周期
------ 活动的生命周期 ------ Android是使用任务Task来管理活动的,一个任务就是一组存放在栈里的活动的集合.每当启动一个活动 ,他就会在返回栈中入栈,并处于栈顶位置.而每当我们按 ...
- android:activity活动的生命周期
掌握活动的生命周期对任何 Android 开发者来说都非常重要,当你深入理解活动的生命 周期之后,就可以写出更加连贯流畅的程序,并在如何合理管理应用资源方面,你会发挥的 游刃有余.你的应用程序将会拥有 ...
随机推荐
- 在spark-shell里用集群方式启动时加入用户需要的jar
希望在spark-shell中测试集群方式的elasticsearch操作, # 1 首先下载相关的jar # 2 启动spark-shell时用--jars ./bin/spark-shell –m ...
- SSAO相关资料
http://www.gamedev.net/page/resources/_/technical/graphics-programming-and-theory/a-simple-and-pract ...
- PHP页面跳转
PHP页面跳转一.header()函数 header()函数是PHP中进行页面跳转的一种十分简单的方法.header()函数的主要功能是将HTTP协议标头(header)输出到浏览器. header( ...
- AJAX笔试面试题汇总
AJAX笔试面试题汇总 Javascript 1. 什么是ajax,为什么要使用Ajax(请谈一下你对Ajax的认识) 什么是ajax: AJAX是“Asynchronous JavaScript a ...
- redis删除list中指定index的值
Redis的List删除命令: lrem : lrem mylist 0 "value" //从mylist中删除全部等值value的元素 0为全部,负值为从尾部开始. ...
- AutoMocker单元测试
/// <summary> /// 测试获取所有物流 /// </summary> [TestMethod] public void TestExpressController ...
- Java中jsp和Servlet的区别
1 Servlet Servlet是一种服务器端的Java应用程序,具有独立于平台和协议的特性,可以生成动态的Web页面.它担当客户请求(Web浏览器或其他HTTP客户程序)与服务器响应(HTTP服务 ...
- servlet request getHeader(“x-forwarded-for”) 获取真实IP
request方法客户端IP: request.getRemoteAddr() 输出:192.168.0.106 客户端主机名:request.getRemoteHost()输出:abc reques ...
- NSOperation GCD 对比 (附NSOperation演练)
项目中使用NSOperation的优点是NSOperation是对线程的高度抽象,在项目中使用它,会使项目的程序结构更好子类化NSOperation的设计思路,是具有面向对象的优点(复用.封装),使得 ...
- 简谈switch case
工作中从buff里截取了一个字符串,然后和配置文件中的字符串名字对比 ,如果一样,处理,不一样,elseif 再判断,再处理! switch(){case : case :...... }先说语法,再 ...