第九课:活动的生命周期(基于AndroidStudio3.2)

本文详细探讨了Android活动中至关重要的生命周期概念,包括不同生存周期阶段、返回栈管理和活动状态。通过示例展示了如何在Android Studio中创建和管理活动,帮助开发者实现更流畅的用户体验。
摘要由CSDN通过智能技术生成

对于Android程序员来说,掌握活动的生命周期非常重要,当我们深入了解活动的生命周期以后,才能写出更流畅的APP,让我们更好的去分配资源,让应用程序有更好的用户体验。

Mobile apps不是真正在较小屏幕上运行的desktop apps。我们不像使用desktop apps那样使用mobile apps。当我们使用desktop app时,它通常因为我们专注于手头的任务会保持打开和活动很长一段时间。相反,Mobile apps的使用寿命更短。我们通常把它从口袋里拿出来,做一些快速的任务,然后把它放回去。有时甚至,当我们使用特定app时,我们可能会被另一个app(例如,电话)打断,导致最初app将被中断,被现有另一个app代替。这些apps的所有激活和运行都由Android runtime管理。

作为开发人员,您无法控制app的生命周期;这由用户来控制。您不能假设在向您的app输入数据的过程中不被用户打断。您也不能假设您的app将始终安全退出;如果没有机会正常关闭,它可能会被杀死。这些都是在设计代码时需要注意的。幸运的是,只要我们的组件发生了某些事情(比如活动),Android运行时就会通知我们。下图显示了活动生命周期。

 

一、回调方法

Event Description
onCreate Called when the activity is first created; you can put your initialization codes here
onRestart When the activity has been stopped and restarted again. This is always followed by onStart
onStart When the activity is starting to become visible to the user
onResume The activity is ready to interact with the user, at this point; the activity is at the top of the activity stack, and it occupies the whole screen
onPause When the activity is about to go to the background; this can happen when another activity grabs the focus
onStop When the activity is no longer visible to the user
onDestroy Called when the activity is destroyed. For the application to come back, it needs to be created again

3种生存周期:以上的7个方法中,除了onRestart()方法,其他的都是两两相对应的;

1、完整生命周期
活动在onCreate() 和 onDestroy();

2、可见生存周期

活动在onStart() 和 onStop()

3、前台生存周期

活动在 onResume() 和 onPause()

下图是活动周期示意图

 

 

二、返回栈

Android使用任务(Task)来管理活动,一个任务就是一组存放在栈里的活动的集合,这个栈也被称作返回栈。那什么是栈呢?栈是一种后进先出的数据结构。我的理解是,栈好比是一个容器,我们要依次往里面放置内容物(数据,Activity),而先放进去的,我们是必须要把最上面的(最后放进去的)先拿走,才能看到或者拿到。

默认的情况下,当我们启动一个新的Activity的时候,这个新启动的活动就会被压入返回栈中,处于栈的顶部,我们只能看到处于栈顶的这个活动,当我们按下Back返回键或者Finish()掉当前栈顶的活动时,它就会退出栈顶,之前被放入的活动(没有被Finish()掉)就会成为栈顶元素,呈现在我们面前。下面我们用一幅图来说明这个问题。

看完栈,我们再看一下活动的状态。活动在其生命周期中最多可能会有四种状态:

运行状态:当活动位于栈顶时,就处于运行状态,系统最不愿意回收这样的活动,回收会导致很差的用户体验。个人认为就是程序闪退,崩溃等。

暂停状态:当活动不再处于栈顶,但是对用户依然可见时。不是说在栈顶的元素才对用户可见吗?这是因为不是每一个活动都是覆盖整个屏幕的,一些对话框形式的活动就只会占用一部分而已,比如Dialog。系统也是不愿意回收处于暂停状态的活动的,除非在万不得已的情况下。

停止状态:活动不再处于栈顶,并且完全不可见的时候,就会处于停止状态。但系统会保存相应的状态和变量,但是当内存不足时,还是会回收这一类的活动的。

销毁状态:当活动从栈中移除以后就变成了销毁状态。系统最乐意回收这类活动,以此来保证充足的内存。

三、实例展示

需求:

实现一个应用中的从主界面分别跳转到其他的2个界面

步骤:

1、建项目<

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值