搜索
首页常见问题简述activity的生命周期

简述activity的生命周期

Jul 23, 2019 am 11:52 AM
activityandroid

简述activity的生命周期

推荐教程:Android教程

本文简单介绍Activity生命周期,内容主要来自于官方文档。

在简述各个生命周期方法前,先总体做一下概述。我们可以从三个层面来监视Activity生命周期

完整生命周期:完整生命周期始于onCreate方法回调,止于onDestroy方法回调
可见周期:可见周期始于onStart方法回调,止于onStop方法回调
前台周期:前台周期始于onResume方法回调,止于onPause方法回调

下面简单介绍一下各个生命周期方法:

onCreate 生命周期的第一个方法,表示Activity正在创建(启动)。特别说明:若您在该方法内调用finish方法,则会立即出发onDestroy回调,其他生命周期不会执行

onRestart 该方法触发的前提:onStop方法被调用。onStop方法被调用而导致的Activity不可见到Activity再次可见时被调用。该方法回调之后系统会相继触发onStart和onResume方法。

onStart Activity可见时调用(此时Activity尚未处于前台):在onCreate方法之后或由onStop方法被调用而导致的Activity不可见到Activity再次可见时被调用

onResume 该方法的回调标识Activity处于前台。官方文档指明,这里比较适合动画启动及排他性设备访问(如相机)等

onPause Activity即将进入后台时回调此方法。需要特别注意的是,若Activity A启动Activity B,则Activity A的onPause方法回调完成后,Activity B才会创建,因此不要在该回调方法中做耗时操作。

onStop Activity由可见到不可见时回调此方法

onDestroy 生命周期的最后一个方法,表示Activity即将被销毁。官方文档指明,在某些情况下,系统会简单粗暴的杀掉Activity的宿主进程(如下文示意图中的标注1),因此我们不应该依赖此方法做数据存储工作,可在此方法中做资源释放操作

下图为官方文档给出的示意图

an1.png

Activity生命周期示意图

此图很清晰严谨,但是官方文档对各个生命周期回调方法的描述并不是很详细,因此如果不认真研读文档,很难明白图中的生命周期方法的走向,并可能对某些方法产生误解。例如对于onStop方法,可能会有部分童鞋对其有误解,误认为Activity进入后台时回调该方法,其实进入后台时回调的是onPause方法,不可见时回调onStop方法;也有童鞋误以为onResume方法回调意味着可以进行交互,其实我们应该以public void onWindowFocusChanged (boolean hasFocus)回调中的hasFocus参数为依据来判定是否可以进行交互。

Activity可见与否与其是否处于前台是两回事,onStart 与 onStop 配对描述Activity是否可见;onPause 与
onResume 配对描述Activity是否处于前台。Activity可见并不意味着可以交互,同样的其处于前台也未必可以交互。直接的例子是,若Activity展示了Dialog,此时Activity仍处于前台,但我们却不能与Activity交互

另外,对于上述示意图中的标注2走向,我相信很多人并没有亲自验证过,因为通常你很难通过交互来复现这一场景。对于这种场景,我们可以通过代码控制来模拟:Activity A启动Activity B,在Activity B的onCreate方法中直接调用finish方法

以上是简述activity的生命周期的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
4 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
4 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
1 个月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它们
1 个月前By尊渡假赌尊渡假赌尊渡假赌

热工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

功能强大的PHP集成开发环境

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )专业的PHP集成开发工具

SecLists

SecLists

SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

VSCode Windows 64位 下载

VSCode Windows 64位 下载

微软推出的免费、功能强大的一款IDE编辑器