Android生命周期例子小解
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生命周期例子小解的更多相关文章
- android 生命周期
引入android生命周期概念来做前端的hash切换页面的思路: 1. page manager来管理多个page(一对多的关系); 2. route:URL <-> Page; 3. P ...
- Android生命周期和Service生命周期
android生命周期 运行:oncreate → onstart → onresume暂停:onresume → onpause:再次运行:onresume停止:onpause → onstop → ...
- Android生命周期里你也许不知道的事
Android生命周期预计连刚開始学习的人都再熟悉只是的东西了,但这里我抛出几个问题.也许大家曾经没有想过或者可能认识的有些错误. 一.当A启动B时,A和B生命周期方法运行的先后顺序是如何的?当按返回 ...
- Android生命周期详细说明
提供两个关于Activity的生命周期模型图示帮助理解: 图1 图2 从图2所示的Activity生命周期不难看出, ...
- Android生命周期
Android的生命周期如下图所示: A和B两个Activity,从A启动B活动.执行的方法: A活动 onCreate() onStart() onResume() ...
- Android 生命周期 和 onWindowFocusChanged
转载 http://blog.csdn.net/pi9nc/article/details/9237031 onWindowFocusChanged重要作用 Activity生命周期中,onStart ...
- Android生命周期注意事项
生命周期图解 以下英文引用全部来自google官方文档说明,方便理解. onCreate (Bundle savedInstan ...
- 测试Servlet生命周期例子程序
写一个类TestLifeCycleServlet,生成构造器TestLifeCycleServlet();重写HttpServlet的doGet();重写GenericServlet的destroy( ...
- Android生命周期回顾
先回顾生命周期 Activity一共有3中状态 运行中 Activity位于前台,并具有用户焦点 暂停 另一个Activity位于屏幕前台并具有用户焦点,但此Activity仍可见.也就是说,另一个A ...
随机推荐
- paste 合并文件
1.命令功能 paste 用于合并文件的列,把每个文件以列对列的方式,一列列地加以合并. 2.语法格式 paste option file 参数选项 参数 参数说明 -d 指定间隔符合并文件(默 ...
- Django中ifequal 和ifnotequal的使用
Django中{% ifequal A B %} 用来比较A和B两个值是否相等,{% ifnotequal A B %}` 用来比较A和B两个值是否不相等..如: {% ifequal user cu ...
- size_t为什么重要
参考:https://www.zhihu.com/question/24773728/answer/66535663 前言:使用size_t可能会提高代码的可移植性.有效性或者可读性,或许同时提高这三 ...
- 2019最新create-react-app创建的react中使用sass/scss,以及在react中使用sass/scss公共变量的方法
Sass(英文全称:Syntactically Awesome Stylesheets)是一个最初由Hampton Catlin设计并由Natalie Weizenbaum开发的层叠样式表语言.Sas ...
- OC + RAC (五) RACMulticastConnection
-(void)_test5{ //弊端:有几个订阅者就会请求几次数据 // 1.创建信号 RACSignal *signal = [RACSignal createSignal:^RACDisposa ...
- R语言预测实战(第一章)
本例使用forecast包中自带的数据集wineind,它表示从1980年1月到1994年8月, 由葡萄酒生产商销售的容量不到1升的澳大利亚酒的总量.数据示意如下: #观察曲线簇 len=1993-1 ...
- 学习笔记11 EF查询相当于sql 中的 where in
两种写法 1. int[] Ids={1,2,3} DBContainer db=new DBContainer(); var list=db.表明.where(a=>Ids.Contains( ...
- java并发编程如何预防死锁
在java并发编程领域已经有技术大咖总结出了发生死锁的条件,只有四个条件都发生时才会出现死锁: 1.互斥,共享资源X和Y只能被一个线程占用 2.占有且等待,线程T1已经取得共享资源X,在等待共享资源Y ...
- day31—CSS Reset 与页面居中布局
转行学开发,代码100天——2018-04-16 报名的网易前端开发课程今天正式开课了,这也是毕业后首次付费进行的正式培训课程学习.以此,记录每天学习内容. 今天学了两个方面的知识: 1. CSS ...
- Vagrant 手册之 box - 概述
原文地址 box 是 Vagrant 环境中使用的包格式.box 可以在 Vagrant 支持的所有平台上被任何人使用,从而提供相同的工作环境. vagrant box 工具提供了管理 box 的所有 ...