博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android Activity 生命周期再验证
阅读量:6278 次
发布时间:2019-06-22

本文共 1685 字,大约阅读时间需要 5 分钟。

前置条件:Activity的launchmode为默认值

 

Activity life circle

 

分以下几种情况讨论activity生命周期回调函数的调用顺序:

  1. 正常打开app,然后按Back键退出
  2. 从Home键最近打开app菜单进入
  3. 正常打开app,然后按Home键返回桌面,再次进入app
  4. 从activity A跳转到activity B,然后按Back键返回activity A
  5. 从activity A打开activity B(Theme.Dialog等),然后按Back键关闭activity B
  6. 从activity A打开Dialog,然后关闭Dialog
  7. 从activity A打开AlertDialog,然后关闭AlertDialog
  8. 来电activity覆盖
  9. 从桌面widget启动activity

 

1.桌面图标启动App,按Back键返回:

onCreate()

onStart()
onResume()
【Back键按下】
onPause()
onStop()
onDestroy()

 

2.长按Home按键,从最近程序中点击图标进入

与情况1相同。

 

3.启动App,按Home按键,然后再点击图标进入

onCreate()

onStart()
onResume()
【Home键按下】
onPause()
onStop()
【再次进入Ap】
onRestart()
onStart()
onResume()

 

4.新Activity全部覆盖,back退出新Activity

A oncreate()

A onstart()
A onResume()
【启动B】
A onPause() 
B onCreate() 
B onStart() 
B onResume()
A onStop()
【从B Back】 
B onPause()
A onActivityResult()
A onRestart()
A onStart()
A onResume() 
B onStop() 
B onDestroy()
【从A Back】
A onPause()
A onStop()
A onDestroy()

 

5.新Activity部分覆盖,back退出新Activity

A onCreate()

A onStart()
A onResume()
【启动B】
A onPause() 
B onCreate() 
B onStart() 
B onResume()
【从B Back】 
B onPause()
A onActivityResult()
A onResume() 
B onStop() 
B onDestroy()

 

6.普通Dialog部分覆盖

同下面AlertDialog

 

7.AlertDialog部分覆盖

onCreate()

onStart()
onResume()
【显示AlertDialog】
【关闭AlertDilaog】
在AlertDialog出现以及消失的过程中,没有触发任何onXXX事件。

 

8.来电覆盖

等同新Activity全覆盖

 

9.桌面控件intent启动

9.1.目标Activity未启动

等同桌面图标直接启动,会直接启动一个新Activity。

9.2.目标Activity已经启动并且在最上层

如果目标Activity是由桌面控件触发的,那么等同情况3,不会创建新Activity。

如果目标Activity是由Launcher图标启动的,那么会不停的创建新Activity。

9.3.目标Activity已经启动但是不在最上层

如果目标Activity是由桌面控件启动的,那么不会创建新Activity,但也不会把目标Activity提到最上层。

如果目标Activity是由Launcher图标启动的,那么会不停的创建新Activity。

 

 

转自:http://mypyg.iteye.com/blog/1272950

例外情况、注意事项参考文章:

 

 

转载于:https://www.cnblogs.com/wavky/articles/3490715.html

你可能感兴趣的文章
DICOM医学图像处理:WEB PACS初谈
查看>>
maven assembly plugin使用
查看>>
5: Calling Programs(Working with programs)
查看>>
QML学习笔记-入门篇(2)
查看>>
H3C设备网络组建和设置
查看>>
windows上一样使用linux命令--xshell登陆cygwin
查看>>
Linux查看系统配置常用命令
查看>>
大端 VS 小端
查看>>
dojo.mixin(混合进)、dojo.extend、dojo.declare
查看>>
虚拟机克隆之后无法正确获取静态ip
查看>>
Java 连接Kafka报错java.nio.channels.ClosedChannelExcep
查看>>
字符设备驱动程序——poll机制介绍
查看>>
Markdown使用
查看>>
iOS - cocoapods/pod
查看>>
Apache+Tomcat(windows环境下)整合
查看>>
Java程序员应该收藏的书籍
查看>>
小菜学设计模式——策略模式
查看>>
Python 数据类型
查看>>
iOS--环信集成并修改头像和昵称(需要自己的服务器)
查看>>
PHP版微信权限验证配置,音频文件下载,FFmpeg转码,上传OSS和删除转存服务器本地文件...
查看>>