Android activity的生命周期 详述 以及fragment嵌套周期

Android activity的生命周期 详述 以及fragment嵌套周期

说到activity生命周期,也是基础中的基础,上次模拟面试就问到这个,尴尬的是竟然忘了,抽个时间好好的复习一下

贴一张网上找的图

oncreat

activity的创建函数,这个时候activity还不可见,可以将activity的初始化函数放在这里。

onstart

当oncreat执行后会执行,onrestart后面也会执行的函数,可以做重新唤起的操作,这时候已经可见但是还未放在前台

onresume

这个时候的activity已经可见,已经在运行中。

onpause

当activity被暂时遮盖,比如dialogo,比如锁屏(这时候因为activity处于栈顶所以执行pause不会执行stop)等activity将会执行此方法,同时activity跳转,返回home的都会执行此函数同时继续执行onstop,当activity在当前状态时候,可以通过调用onresume重新变为运行状态

onstop

当activity不可见的时候,这个时候不能进行交互等操作,activity处于停止运行状态

onrestart

当activity重新被唤起的时候,如果已经是stop状态,这个时候需要onrestart重新唤起activity,然后继续流程。

ondestory

销毁时候的执行的函数,通常做一些销毁前的数据回收等操作。

典型的应用

当activity启动时候会执行的生命周期是什么

我们将activity打印log看下具体的执行周期
这里写图片描述
根据我们的探讨也对照上面的周期图片,当一个activity creat时候,依次执行oncreat->onstart->onresume
这个时候activity 已经变得可见,运行中

我们继续的在这里进行操作,按下home键

这里写图片描述
因为activity被覆盖所以这个时候activity依次执行onpause->onstop

如果通过activity A启动activity B时候他们的周期会怎么变化呢

如果按照生命周期图示来的话,activity A会执行oncreat->onstart->onresume->onpause->onstop
activity B会执行oncreat->onstart->onresume
那具体是如何执行呢,是a执行完了后在执行b呢?我们照例来打印一下log
当activity创建
这里写图片描述

activity A会依次执行oncreat->onstart->onresume

当我们进行跳转后
这里写图片描述
发现依次执行activity a->oncreat b->onstart b->onresume b->onstop a

通过上面的log说明,当我们进行跳转时候,activity没有被覆盖时候会执行onpause,接着creat activity b,当b执行onresume后,完全覆盖掉a后,才会执行a的onstop

那我们再点击返回到a activity会执行什么操作

这里写图片描述

我们会发现依次执行 onpause b->onrestart a->onstart a->onresume a->onstop b->ondestroy b

当我们进行返回时,b执行onpause为返回做准备,当a完全显示后,执行b的销毁操作

当屏幕突然旋转会执行什么操作

这里我们重写onSaveInstanceState方法,如果activity销毁并重建的话,将会通过保存的数据进行重建。
这里写图片描述

我们发现 activity将会被销毁,同时在销毁前,onpause后会执行save操作,同时进行activity的重建

同时如果对activity的信息进行打印,会发现这是一个新的activity

fragment嵌套周期

fragment是依托于activity存在的,同样的,我们要讨论相互嵌套的周期,同样的打印一下生命周期,在一个activityA中有一个fragment,点击activityA中的控件,跳转到activityB中。
这里分布来 讨论其生命周期。 注:前缀带f的是fragment的生命周期

创建过程

creat ——-创建activity
attach ——-绑定activity
fcreat ——— fragment的创建
fcreatview ——— fragment的创建
activitycreat ——— fragment的创建
start ——— 首先执行activity的start
fstart ——— 接着执行fragment的start
resume ——— 首先执行activity的resume
fresume ——— 首先执行fragment的resume

可以看到首先会创建activity,所以执行activity的creat,接着执行attach将fragment和activity绑定,接着执行fragment的创建,接着activity的顺序总会先于fragment执行,执行生命周期。

接着跳转到activtyB中,生命周期如下
fpause ——— 首先执行fragment的pause
pause ——— 接着执行activity的pause
fstop——– 首先执行fragment的stop
stop——– 首先执行activity的stop

可以看到在创建时候是从activity到fragment的,但是销毁的时候确是从fragment到activity。

接着销毁activityB然后销毁activityA,可以看到如下的生命周期

start
fstart——–从activity到fragment依次start
resume
fresume——-从activity到fragment依次resume
fpause
pause ——-销毁从fragment到activity依次pause
fstop
stop——-销毁从fragment到activity依次stop
fdestoryView
fdestory
detach
destory ——-销毁从fragment到activity依次destory

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
生命周期是指一个 Android Fragment 在其创建、活动状态和销毁过程中所经历的一系列事件和方法调用。 1. Fragment生命周期方法有以下几个: - onAttach():当 FragmentActivity 关联时调用。 - onCreate():在 Fragment 创建时调用。 - onCreateView():在创建 Fragment 的视图时调用。 - onViewCreated():在 Fragment 的视图已经创建后调用。 - onActivityCreated():在与 Fragment 相关联的 Activity 的 onCreate() 方法已经完成后调用。 - onStart():在 Fragment 可见时调用。 - onResume():在 Fragment 可交互(获取焦点)并可见时调用。 - onPause():当 Fragment 失去焦点但仍可见时调用。 - onStop():当 Fragment 不再可见时调用。 - onDestroyView():在 Fragment 的视图被销毁时调用。 - onDestroy():在 Fragment 销毁时调用。 - onDetach():当 FragmentActivity 解除关联时调用。 2. Fragment生命周期流程如下: - onAttach() -> onCreate() -> onCreateView() -> onViewCreated() -> onActivityCreated() - -> onStart() -> onResume() - -> onPause() -> onStop() -> onDestroyView() -> onDestroy() -> onDetach() 3. 在生命周期方法中,可以执行一些常见的操作: - onCreate():初始化一些数据或资源。 - onCreateView():创建并返回 Fragment 的布局视图。 - onViewCreated():对布局视图进行初始化操作。 - onStart():执行一些开始的任务或动画。 - onResume():注册监听器、开始耗时任务等。 - onPause():取消注册监听器、暂停耗时任务等。 - onStop():保存数据或状态等。 - onDestroyView():释放视图相关的资源。 - onDestroy():释放其他资源。 - onDetach():清理与 Activity 相关的引用。 这些生命周期方法与 Fragment 的状态转换和可见性变化相关,通过重写这些方法,可以在合适的时机执行相应的操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值