一、Activity的基本概念

  Activity是Android的四大组件之一,它是一种可以包含用户界面的组件,主要用于和用户进行交互,比如打电话,照相,发送邮件,或者显示一个地图!Activity用于显示用户界面,用户通过Activity交互完成相关操作 , 一个App允许有多个Activity。

二、Activity的生命周期

  Activity生命周期是每一个Android开发者都必须掌握的,当我们深入理解活动的生命周期之后,就可以写出更加连贯流畅的程序,让我们的程序拥有更好的用户体验

2.1、Activity的生命周期图

  先上一张从图吧,图片看上去一目了然。图片来源(http://www.runoob.com/w3cnote/android-tutorial-activity.html)

2.2、Activity的四种状态

  每个Activity在其生命周期中最多可能会有四种状态。

1.运行状态

  当一个Activity位于返回栈(关于返回栈的概念下面再介绍)的栈顶时,这时Activity就处于运行状态,系统会将处于栈顶的Activity显示给用户。

2.暂停状态

  当一个Activity不再处于栈顶位置,但仍然可见,这时Activity就进入了暂停状态。初学者可能会有这样的疑问,既然Activity都已经不在栈顶了,怎么会还可见呢,这是因为并不是每一个Activity都会占满整个屏幕的,比如对话框形式的Activity只会占用屏幕中间的部分区域。

3.停止状态

  当一个Activity不再处于栈顶位置,并且完全不可见的时候,就进入了停止状态。

4.销毁状态

  当一个Activity从返回栈中移除后就变成了销毁状态。

2.3、Android返回栈

  Android是使用任务(Task)来管理Activity的,一个任务就是一组存放在栈里的Activity集合,这个栈被称作返回栈,栈(堆栈)是一种先进后出的数据结构,这里顺便提一下另一种常见的数据结构:队列,队列是一种先进先出的数据结构。

每当启动一个新的Activity时,它会被放入返回栈中,并处于栈顶的位置。每当我们按下Back键或调用activity的finish()方法去销毁一个活动时,处于栈顶的Activity会出栈,这时前一个入栈的Activity就会重新处于栈顶的位置。系统总是会显示处于栈顶的Activity给用户。

2.4、Activity的生存期

  Activity类中定义了7个回调方法,覆盖了Activity生命周期的每一个环节,下面来一一介绍这7个方法

1.onCreate()

  这个方法在每一个Activity类都会有,当我们新建一个Activity类时,一定会重写父类的onCreate方法,onCreate方法会在Activity第一次被创建时调用。我们应该在这个方法中完成Activity的初始化操作,比如说加载布局,初始化布局控件,绑定按钮事件等。

2.onStart()

  这个方法在Activity由不可见变为可见时调用。

3.onResume()

  这个方法在Activity准备好喝用户交互的时候调用。此时的Activity一定位于返回栈的栈顶,并且处于运行状态。

4.onPause()

  这个方法在系统准备去启动或者恢复另一个Activity的时候调用。

5.onStop()

  这个方法在Activity完全不可见的时候调用。它和onPause()方法的主要区别在于,如果启动的新Activity是一个对话框式的activity,那么,onPause()方法会得到执行,而onStop()方法并不会执行。

6.onDestory()

  这个方法在Activity被销毁之前调用,之后Activity的状态将变为销毁状态。

7.onRestart()

  这个方法在Activity由停止状态变为运行状态之前调用,也就是Activity被重新启动了。

最新文章

  1. 用C#从数据库动态生成AdminLTE菜单的一种方法
  2. Buffer Cache
  3. HTML5移动Web开发(一)——HTML5和移动网站基本概念以及一些模拟器
  4. C#基础整理参数
  5. Swift 关键字汇总
  6. TCP/UDP网络编程的基础知识与基本示例(windows和Linux)
  7. [Leetcode]-ReverseLinkedList
  8. Sybase Unwired Platform(SUP) 经常使用资源整理(不断更新中)
  9. jmeter(八)-JDBC请求(sqlserver)
  10. 20181225-Linux Shell Bash环境下自动化创建ssh互信脚本
  11. redis的Pub/Sub
  12. 对mysql 单表备份
  13. [BJWC2011]元素
  14. Linux内核分析第八周总结
  15. 【FusionCharts学习-1】获取资源
  16. 20155232 2016-2017-3 《Java程序设计》第4周学习总结
  17. iermu爱耳目
  18. How to store scaling parameters for later use
  19. Hbase架构和读写流程
  20. Linux 最常用的20条命令

热门文章

  1. Andrew Ng机器学习编程作业:K-means Clustering and Principal Component Analysis
  2. lucene实现初级搜索引擎
  3. php RFC兼容的电子邮件地址验证
  4. day3-python-文件操作(2)
  5. PAT 天梯赛 L1-021. 重要的话说三遍 【水】
  6. 如何生成.a文件,小心有坑!!
  7. linux命令(6/9):watch命令
  8. [转]毕设- 深入HBase架构解析(一)
  9. 在两台服务器之间建立信任关系解决scp,ssh等不用输入密码等问题
  10. 华为S5700系列交换机配置通过Telnet登录设备