Activity典型情况下的生命周期分析

正常情况下,Acitivity会经历如下生命周期:

  • (1) onCreate():表示Activity 正在创建,这是生命周期的第一个方法,可以做一些初始化操作,比如调用setContentView加载布局,初始化Acitivity所需的数据等。
  • (2) onRestart():表示Activity 正在重新启动。当前Acitivity从不可见重新变为可见状态时会调用onRestart方法。比如按Home键切换到桌面或者打开一个新的Activity,当前Actyvity就会暂停,也就onPause和onStop被执行,再回到这个Activity就会出现这种情况。
  • (3) onStart():表示Activity正在被启动,已经可见,但还没有出现在前台,还无法和用户交互。
  • (4) onResume():表示Activity已经可见了,并且在前台开始活动。注意:onStart和onResume都表示Activity已经可见,但是onStart的时候Activity还在后台,onResume的时候Activity才显示到前台。
  • (5) onPause():表示Activity 正在停止,正常情况下,紧接着onStop就会被调用。此时可以做一些存储数据、停止动画等操作,不能太耗时,否则会影响新的Activity的显示,onPause必须先执行完,新Activity的onResume才会执行。
  • onStop:表示Activity***即将停止*,可以做一些稍微重量级的回收工作,同样不能太耗时。
  • onDestroy:表示Activity即将被销毁,这是Activity生命周期的最后一个回调,可以做一些回收和最终的资源释放。
    这里写图片描述
有如下一些情况:

(1) 第一次启动,回调如下:onCreat->onStart->onResume
(2) 当用户打开新的Activity或者切换到桌面的时候,回调如下:onPause->onStop 。如果新的Activity是透明的 ,那么当前Activity 只会调用onPause,不会调用onStop
(3) 当用户再次回到原Activity时,回调如下:onRestart->onStart->onResume
(4) 当用户按下back键回退时,回调如下:onPause->onStop->onDestory
(5) 当Activity被系统回收后再次打开,生命周期方法回调过程和(1)一样,只是生命周期方法一样,不代表所有过程都一样。

问题:假设当前Activity为A,如果这时用户打开一个新的Activity B,那么B的onResume和A的onPause哪个先执行?

在新的Activity启动之前,栈顶的Activity需要先onPause后,新的Activity才能启动。
onPause(A) -> onCreate(B) -> onStart(B) -> onResume(B) -> onStop(A)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值