网站首页 > 教程分享 正文
问题:Activity A跳转Activity B,再按返回键,A、B的生命周期执行顺序是什么?
当A跳转到B的时候,A先执行onPause,然后居然是B再执行onCreate -> onStart -> onResume,最后才执行A的onStop!!!
当B按下返回键,B先执行onPause,然后居然是A再执行onRestart -> onStart -> onResume,最后才是B执行onStop -> onDestroy!!!
下面这张图已经给我们解释的明明白白了。
A跳转B
当调用startActivity时,向当前栈中添加activityB, activityA 会执行 onPause,此时 activityA 处于失去焦点但可见的状态,因为 activityB 还没开始绘制,所以activityA不会回调 onStop方法,接着 activityB 会开始执行 onCreate -> onStart -> onResume ,我们都知道Activity 是在 onResume 中开始绘制界面,当 activityB执行完 onResume后,此时 activityA 处于不可见的状态,即按图上所示,activityA 会回调 onStop 方法。这也就是在activityA 跳转 activityB 时,A的onStop 最后执行。
B 返回 A
同理,在activityB中按下返回键,activityB会先执行 onPause ,此时B还处于可见状态,A 会执行 onRestart -> onStart -> onResume ->,此时A 已经处于可见状态了,B 不可见,开始执行 onStop -> onDestroy 方法。这样解释就正确了!
情况二:如果 ActivityB 为 dialog 式或者 半透明背景呢?给你三秒钟考虑一下~
当A跳转到B的时候,A先执行onPause,然后居然是B再执行onCreate -> onStart -> onResume。(注意:A的 onStop 不会执行)
当B按下返回键,B先执行onPause,然后是A只会执行 onResume,最后 B 执行onStop -> onDestroy。
只要记住,只要 activity 处于可见的状态,就不会执行 onStop 方法!!(The activity is no longer visible !!!)即当前 activity 再也不可见了,才会回调 onStop 方法!
这道题我面试目前碰到了4次,直到第三次我才意识到问题的严重性,我说怎么有些面试让我回去等通知,等着等着就没信了。希望你们不要和我一样栽在这道题上...
猜你喜欢
- 2025-05-05 有了这份900多页的Android面试指南,你离大厂Offer还远吗?
- 2025-05-05 K2 Blackpearl 流程平台总体功能介绍:常规流程功能
- 2025-05-05 零基础安卓开发起步(一)(安卓开发入门视频)
- 2025-05-05 教程:让你的安卓像Windows一样实现程序窗口化运行
- 2025-05-05 Android事件总线还能怎么玩?(事件总线有什么好处)
- 2025-05-05 Android 面试被问“谈谈架构”,到底要怎样回答才好?
- 2025-05-05 Android开发工具Parcel和Serialize
- 2025-05-05 Android 中Notification的运用(notification widget安卓)
- 2025-05-05 Android退出所有Activity最优雅的方式
- 2025-05-05 MT管理器-简单实战-去除启动页(mt管理器怎么去除软件弹窗)
你 发表评论:
欢迎- 最近发表
-
- 有了这份900多页的Android面试指南,你离大厂Offer还远吗?
- K2 Blackpearl 流程平台总体功能介绍:常规流程功能
- 零基础安卓开发起步(一)(安卓开发入门视频)
- 教程:让你的安卓像Windows一样实现程序窗口化运行
- Android事件总线还能怎么玩?(事件总线有什么好处)
- Android 面试被问“谈谈架构”,到底要怎样回答才好?
- Android开发工具Parcel和Serialize
- Android 中Notification的运用(notification widget安卓)
- Android退出所有Activity最优雅的方式
- MT管理器-简单实战-去除启动页(mt管理器怎么去除软件弹窗)
- 标签列表
-
- css导航条 (66)
- sqlinsert (63)
- js提交表单 (60)
- param (62)
- parentelement (65)
- jquery分享 (62)
- check约束 (64)
- curl_init (68)
- sql if语句 (69)
- import (66)
- chmod文件夹 (71)
- clearinterval (71)
- pythonrange (62)
- 数组长度 (61)
- javafx (59)
- 全局消息钩子 (64)
- sort排序 (62)
- jdbc (69)
- php网页源码 (59)
- assert h (69)
- httpclientjar (60)
- postgresql conf (59)
- winform开发 (59)
- mysql数字类型 (71)
- drawimage (61)
本文暂时没有评论,来添加一个吧(●'◡'●)