Activity 从创建到进入运行态所触发的事件

onCreate()-->onStart-->onResume()

从运行态到停止态所触发的事件                

onPause()--->onStop()

从停止态到运行态所触发事件

onRestart()-->onStart()--->onResume()

从运行态到暂停态所触发事件

onPause()

从暂停态到运行态所触发事件

onResume()

根据例子来详细的介绍一下它的生命周期的过程(它所调用的方法):

首先先看一下例子:

Java文件有:ActivityLifeCyde.java   、  SecondLifeCyle.java、ThridLifeCyle.java 

Xml布局文件有:main.xml、second.xml、thirid.xml

首先是ActivityLifeCyde.java文件

SecondLifeCyle.java文件中

ThridLifeCyle.java  文件中

Main.xml文件中

Second.xml

Thirid.xml文件中

要在AndroidManifest.xml文件中添加两句话

效果显示:

当点击button按钮时

点击button按钮时返回上个界面

点击对话框按钮时出现

当点击退出按钮时

点击取消则返回当前页面,点击确定则退出当前Activity

下面则根据这个例子来解释一下生命周期的调用过程

1、刚把程序运行起来的时候

onCreate() -- onStart() -- onResume()

2、当点击Button按钮的时候

onPause() -- onStop() 

也就是说 进入另外一个Activity的时候会暂停当前的Activity 并且停止

进入到另外一个Activity的时候也会执行 1 中的过程 ,当再返回第一个Activity的时候也会执行 2 中一样的过程

3、点击对话框按钮的时候

onPause() 

这个时候只会把这个Activity 暂停 ,因为出现的对话框同样也在这个Activity中,也就是说这个Activity并没有停止,所以他不会调用onStop()这个方法,更不会调用onDestory() 消灭这个Activity ,也可以理解为 当前Activity失去了焦点, 就好比 一个页面中有两个文本框:文本1和文本2   , 光标由文本1 转到文本2中 实际上就是这个过程

4、点击对话框按钮,然后再点击返回键的时候

onPause()  --  onResume() 

当前暂停的Activity在暂停后再次使用的时候会调用onResume()这个方法 重新开始这个Activity

5、点击退出按钮,如果点击取消的时候

在这个过程中当前程序的生命周期是没有任何变化的

6、点击退出按钮,如果点击退出按钮的时候

onPause() -- onStop() ---  onDestroy()   

退出的话就会把当前的activity结束并销毁掉 

7、运行程序,再返回

onCreate() -- onStart() -- onResume() --  onPause() -- onStop() ---  onDestroy()

整个生命周期的调用

8、运行程序 ,再点击手机键盘中的 小房子  的那个按钮

onCreate() -- onStart() -- onResume() --  onPause() -- onStop()

这个时候Activity 是没有被消灭的,只是把它暂停了,主页把这个activity覆盖了,相当于进站

9、在8的基础上再点击进入程序

onRestart() ---  onStart() ---  onResume()

把这个activity从暂停的状态重新开始,调用onRestart()这个方法 ,然后再开始运行

10、长时间点击 小房子 那个按钮

这个动作是没有执行任何方法,只是回到了主页面

11、在 执行了 10 的基础上,再长时间点击 小房子  那个按钮 回到activity

onRestart() ---  onStart() ---  onResume()

然后在ActivityLifeCyde.java 文件中添加这两个方法

12、如果在这个时候再点击  小房子 的那个键

按下电源按键(关闭屏幕显示)时

长按HOME键,选择运行其他的程序时

onSaveInstanceState() ---  onPause() --  onStop()

其实点击这个键 可以理解为强制性的离开当前的activity 并没有得到我的同意 ,在这个时候会执行 onSaveInstanceState () 这个方法 保存当前activity的进度 ,就好比你在手机上看小说,突然来了一个电话,手机会保存小说的进度,当你接完电话的时候小说会读取你接电话之前的进度

13、在执行了 12 的基础上 再进入这个程序中

onRestart() ---  onStart() ---  onResume()

复苏,重新开始

onSaveInstanceState方法和onRestoreInstanceState方法不一定是成对的被调用的,onRestoreInstanceState被调用的前提是,activity 确实被系统销毁了

Android生命周期例子小解的更多相关文章

  1. android 生命周期

    引入android生命周期概念来做前端的hash切换页面的思路: 1. page manager来管理多个page(一对多的关系); 2. route:URL <-> Page; 3. P ...

  2. Android生命周期和Service生命周期

    android生命周期 运行:oncreate → onstart → onresume暂停:onresume → onpause:再次运行:onresume停止:onpause → onstop → ...

  3. Android生命周期里你也许不知道的事

    Android生命周期预计连刚開始学习的人都再熟悉只是的东西了,但这里我抛出几个问题.也许大家曾经没有想过或者可能认识的有些错误. 一.当A启动B时,A和B生命周期方法运行的先后顺序是如何的?当按返回 ...

  4. Android生命周期详细说明

    提供两个关于Activity的生命周期模型图示帮助理解:                                           图1 图2 从图2所示的Activity生命周期不难看出, ...

  5. Android生命周期

    Android的生命周期如下图所示: A和B两个Activity,从A启动B活动.执行的方法: A活动 onCreate() onStart() onResume()                 ...

  6. Android 生命周期 和 onWindowFocusChanged

    转载 http://blog.csdn.net/pi9nc/article/details/9237031 onWindowFocusChanged重要作用 Activity生命周期中,onStart ...

  7. Android生命周期注意事项

                                    生命周期图解     以下英文引用全部来自google官方文档说明,方便理解. onCreate (Bundle savedInstan ...

  8. 测试Servlet生命周期例子程序

    写一个类TestLifeCycleServlet,生成构造器TestLifeCycleServlet();重写HttpServlet的doGet();重写GenericServlet的destroy( ...

  9. Android生命周期回顾

    先回顾生命周期 Activity一共有3中状态 运行中 Activity位于前台,并具有用户焦点 暂停 另一个Activity位于屏幕前台并具有用户焦点,但此Activity仍可见.也就是说,另一个A ...

随机推荐

  1. js 鼠标效果

    一. 鼠标悬停效果和离开效果 鼠标效果和v-if 配合使用效果很好 <a class="all btn" href="#" v-on:mouseover= ...

  2. css 响应式(媒介查询)

    1.CSS 来实现响应式 CSS实现响应式网站的布局要用到的就是CSS中的媒体查询接下来来简单介绍一下: @media 类型 and (条件1) and (条件二){css样式} <link r ...

  3. Spring---数据访问

    1.Spring Data概述 1.1.Spring Data 项目 是  Spring用来解决数据访问问题   的一站式解决方案,包含了  大量关系型数据库.非关系型数据库  的  数据访问解决方案 ...

  4. 在flask服务里面执行adb 安装命令

    今天讲的是我在flask服务里执行adb install 命令,被坑了一天 需求是我们的安卓打包机器和我们的自动化机器不是同一台,管理人也不一样,想让每次打包后能通知到我们的服务器,然后执行后续的操作 ...

  5. CMD批处理查看当前路径

    1.直接在CMD窗口查看 echo %cd% 2.建立批处理文件 @echo offecho 当前盘符:%~d0echo 当前盘符和路径:%~dp0echo 当前批处理全路径:%~f0echo 当前盘 ...

  6. zabbix4.0 percona插件实现监控mysql

    percona是一款能够详细监控zabbix MySQL的插件 官方下载percona插件 wget https://www.percona.com/downloads/percona-monitor ...

  7. Linux 系统下文件夹与文件的读写可执行权限问题

    linux是一个多用户操作系统,linux对文件系统内的所有文件,实行了严格的权限划分管理.防止没有权限的用户访问某个文件.linux文件或目录的权限分为 读.写.可执行三种权限.文件访问的用户类别分 ...

  8. EXP-00091和IMP-00010报错

    原来导出表的库:database ORACLE_SID=TEST0221 版本: 11.2.0.4需要导进的库:database ORACLE_SID=PROD 版本:10.2.0.1因为字符集的问题 ...

  9. ruby异常处理

    begin # 这段代码抛出的异常将被下面的 rescue 子句捕获 rescue # 这个块将捕获所有类型的异常 retry # 这将把控制移到 begin 的开头 end

  10. Git学习及使用

    一.认知git理论 1.git出现的背景 版本控制 版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统. 许多人习惯用复制整个项目目录的方式来保存不同的版本,或许还会改名加上 ...