前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Activity生命周期1

Activity生命周期1

作者头像
随心助手
发布2019-10-15 18:19:40
6060
发布2019-10-15 18:19:40
举报
文章被收录于专栏:nginx遇上redis

Activity是Android组件中最基本也是最为常见用的四大组件之一,也是我们在开发过程之中接触最多的组件,所以了解Activity的生命周期,并正确的理解与应用,是必不可少的。下面就来介绍一下Activity生命周期。

生命周期

活动在系统中被活动堆栈管理。当一个新的活动开始时,将会强加于堆栈的顶端并成为运行活动状态。而之前的活动总是被放置在这个活动下面的堆栈中,并且不会被移动到前台直到新的活动退出为止。 活动从开始到结束经历各种状态。从一个状态到另一个状态的转变,从无到有再到无,这样一个过程中所经历的各个状态就叫做生命周期。Activity拥有自己的生命周期,而它的意义就在于,当我们对当前的界面进行展示的过程中,本身也会经历各个阶段去准备和处理当前的activity,然后展示给用户,而开发者为了界面上一些炫酷的效果与功能,做一些特殊处理时,就离不开这些生命周期。

各生命周期状态说明

方法

描述

用途(以当前界面播放视频为例)

下一个方法

onCreate()

当Activity第一次创建时调用。该方法(如果有)会提供给你一个包含之前活动的冻结状态信息bundle包。

进行一系列初始化操作,如:创建View,加载视频数据等。

onStart()

onRestart()

当Activity被展示在用户眼前时调用。如果活动出现在前台紧接着是onResume(),如果活动直接隐藏则紧接着是onStop()。

该方法也不常用。

onResume() or onStop()

onResume()

当Activity将开始与用户进行交互时调用。在这个时间点你的活动将会在活动堆栈的顶端,用户输入将会访问它。

暂停后恢复我们会在该方法中进行一些操作,例如视频继续播放。

onPause()

onPause()

当系统将要恢复一个之前的活动。这是一个有代表性的常常用于提交未被存储的改动信息为持久数据,停止动画和消耗CPU的东西等。实现该方法必须要特别的迅速,因为在此方法返回之前,下一个活动将不会恢复。如果活动将返回到前台则接下来调用onResume(),如果要隐藏到用户看不见的地方时,则调用onStop();

该方法十分重要,用来做信息持久化存储操作以及停止消耗CPU资源操作,如记录视频播放进度时间,以及暂停视频播放操作等。

onResume or onStop()

onStop()

当另一个活动被恢复且完全覆盖该活动,而该Activity将不在展示给用户时调用。这种情况将发生在一个新的活动将被开始,一个退出的活动将被恢复,又或者该活动将要被销毁。如果该活动将恢复与用户交互则调用onRestart(),如果该活动将被销毁则调用onDestory()。

界面将会隐藏或销毁,做一些重要信息或未被存储的信息的存储操作。但也不要太耗时。如存储用户信息等操作,以及用户此次观看的视频地址以及时间,便于下次打开该界面时继续播放。

onRestart() or onResume()

onDestory()

Activity被销毁时,最后一个被调用的方法。这个方法将会发生因为活动将会结束(在活动中调用finish()方法,或者系统临时销毁该实例节约空间。你可以使用isFinishing()方法区别这两种场景)。

界面将要销毁,释放一些实例节约空间,如置空List集合等。

下图中展示了activity的重要的状态改变路径。矩形中的代表你可以在活动在两种状态间改变时你可以实现的回调方法去执行想要的操作。而带有颜色的椭圆形代表着activity的主要状态。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-10-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 nginx遇上redis 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 生命周期
  • 各生命周期状态说明
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档