0

0

简述activity的生命周期

angryTom

angryTom

发布时间:2019-07-23 11:52:18

|

27743人浏览过

|

来源于php中文网

原创

简述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处于前台。官方文档指明,这里比较适合动画启动及排他性设备访问(如相机)等

Android四种Activity的加载模式 WORD版
Android四种Activity的加载模式 WORD版

本文档主要讲述的是Android四种Activity的加载模式;每个Activity的状态是由它在Activity栈(是一个后进先出LIFO,包含所有正在运行Activity的队列)中的位置决定的。Activty的生命周期的也就是它所在进程的生命周期。希望本文档会给有需要的朋友带来帮助;感兴趣的朋友可以过来看看

下载

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方法

相关专题

更多
Golang gRPC 服务开发与Protobuf实战
Golang gRPC 服务开发与Protobuf实战

本专题系统讲解 Golang 在 gRPC 服务开发中的完整实践,涵盖 Protobuf 定义与代码生成、gRPC 服务端与客户端实现、流式 RPC(Unary/Server/Client/Bidirectional)、错误处理、拦截器、中间件以及与 HTTP/REST 的对接方案。通过实际案例,帮助学习者掌握 使用 Go 构建高性能、强类型、可扩展的 RPC 服务体系,适用于微服务与内部系统通信场景。

8

2026.01.15

公务员递补名单公布时间 公务员递补要求
公务员递补名单公布时间 公务员递补要求

公务员递补名单公布时间不固定,通常在面试前,由招录单位(如国家知识产权局、海关等)发布,依据是原入围考生放弃资格,会按笔试成绩从高到低递补,递补考生需按公告要求限时确认并提交材料,及时参加面试/体检等后续环节。要求核心是按招录单位公告及时响应、提交材料(确认书、资格复审材料)并准时参加面试。

44

2026.01.15

公务员调剂条件 2026调剂公告时间
公务员调剂条件 2026调剂公告时间

(一)符合拟调剂职位所要求的资格条件。 (二)公共科目笔试成绩同时达到拟调剂职位和原报考职位的合格分数线,且考试类别相同。 拟调剂职位设置了专业科目笔试条件的,专业科目笔试成绩还须同时达到合格分数线,且考试类别相同。 (三)未进入原报考职位面试人员名单。

58

2026.01.15

国考成绩查询入口 国考分数公布时间2026
国考成绩查询入口 国考分数公布时间2026

笔试成绩查询入口已开通,考生可登录国家公务员局中央机关及其直属机构2026年度考试录用公务员专题网站http://bm.scs.gov.cn/pp/gkweb/core/web/ui/business/examResult/written_result.html,查询笔试成绩和合格分数线,点击“笔试成绩查询”按钮,凭借身份证及准考证进行查询。

11

2026.01.15

Java 桌面应用开发(JavaFX 实战)
Java 桌面应用开发(JavaFX 实战)

本专题系统讲解 Java 在桌面应用开发领域的实战应用,重点围绕 JavaFX 框架,涵盖界面布局、控件使用、事件处理、FXML、样式美化(CSS)、多线程与UI响应优化,以及桌面应用的打包与发布。通过完整示例项目,帮助学习者掌握 使用 Java 构建现代化、跨平台桌面应用程序的核心能力。

65

2026.01.14

php与html混编教程大全
php与html混编教程大全

本专题整合了php和html混编相关教程,阅读专题下面的文章了解更多详细内容。

36

2026.01.13

PHP 高性能
PHP 高性能

本专题整合了PHP高性能相关教程大全,阅读专题下面的文章了解更多详细内容。

75

2026.01.13

MySQL数据库报错常见问题及解决方法大全
MySQL数据库报错常见问题及解决方法大全

本专题整合了MySQL数据库报错常见问题及解决方法,阅读专题下面的文章了解更多详细内容。

21

2026.01.13

PHP 文件上传
PHP 文件上传

本专题整合了PHP实现文件上传相关教程,阅读专题下面的文章了解更多详细内容。

35

2026.01.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Excel 教程
Excel 教程

共162课时 | 11.9万人学习

Java 教程
Java 教程

共578课时 | 46.3万人学习

Uniapp从零开始实现新闻资讯应用
Uniapp从零开始实现新闻资讯应用

共64课时 | 6.6万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号