Android -- 每日一问:怎么理解 Activity 的生命周期?

02.jpg

典型回答

image.png

如果一个 Activity 在用户可见时才处理某个广播,不可见时注销掉,那么应该在哪两个生命周期的回调方法去注册和注销
BroadcastReceiver 呢?

Activity 的可见生命周期发生在 onStart调用与 onStop调用之间。在这段时间,用户可以在屏幕上看到 Activity 并与其交互。我们可以在 onStart中注册一个BroadcastReceiver 以监控影响 UI 的变化,并在用户无法再看到您显示的内容时在
onStop 中将其取消注册。

如果有一些数据在 Activity 跳转时(或者离开时)要保存到数据库,那么你认为是在 onPause 好还是在 onStop
执行这个操作好呢?

onPause 较容易被触发,所以我们在做 BroadcastReceiver 注销时放在onStop要好些。onPause 时 Activity 界面仍然是可见的,如弹出一个 Dialog 时。但在保存数据时,放在 onPause 去做可以保证数据存储的有效性,如果放在 onStop 去做,在某些情况下 Activity 走完 onPause 后有可能还没顺利走到 onStop 就被系统回收了。

但要注意在 onPause 中要非常迅速地执行完所需操作,不然会影响到下一个 Activity 的生命周期函数的调用。

简单说一下 Activity A 启动 Activity B 时,两个 Activity 生命周期的变化。

当一个 Activity 启动另一个 Activity 时,它们都会发生生命周期转变。第一个 Activity 暂停然后停止(但如果它在后台仍然可见,则不会停止,比如 B 是半透明的),系统会创建另一个 Activity。 如果这两个 Activity 共用保存数据到文件或者数据库,必须要注意,在创建第二个 Activity 前,第一个 Activity 不会完全停止。更确切地说,启动第二个 Activity 的过程与停止第一个 Activity 的过程存在重叠。

以下是当 Activity A 启动 Activity B 时一系列操作的发生顺序:
Activity A 的 onPause 方法执行。
Activity B 的 onCreate、onStart 和 onResume 方法依次执行。
然后,如果 Activity A 在屏幕上不再可见,则其 onStop 方法执行。

你的朋友是不是也在准备面试呢?你可以“请朋友读”,把今天的题目分享给好友,或许你能帮到他。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Kevin-Dev

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值