Android面试:Activity生命周期与Intent解析
版权申诉
117 浏览量
更新于2024-08-15
收藏 36KB PDF 举报
"这篇PDF主要探讨了Android面试中关于Activity的相关知识点,包括Activity的生命周期、Activity的属性设定、处理系统回收及Intent的使用等核心概念。"
在Android开发中,Activity扮演着用户界面的主要角色,它是应用程序与用户交互的窗口。Activity的生命周期是由Android系统统一管理的,以确保在资源有限的情况下优先保证基本功能的运行。以下是Activity的基本生命周期方法的详细解释:
1. `onCreate(Bundle savedInstanceState)`: 当Activity首次创建时,此方法会被调用。在这里,开发者通常会进行布局加载、初始化变量和设置监听器等工作。`savedInstanceState`参数用于在配置变更(如屏幕旋转)时恢复Activity的状态。
2. `onStart()`: 在Activity变得可见但不一定是前台时调用,用户现在可以感知到Activity,但可能仍被其他全屏Activity遮挡。
3. `onResume()`: Activity完全可见并且与用户交互时调用,此时Activity处于活动状态。
4. `onPause()`: 当Activity即将被另一个Activity覆盖,但仍部分可见时调用。在此阶段,应该保存任何必要的数据,因为系统可能会在任何时候调用`onStop()`或`onDestroy()`。
5. `onStop()`: 当Activity完全不可见时调用,通常发生在Activity被移出屏幕或新Activity启动时。在此阶段,大部分资源可以释放,但应保留足够信息以便恢复Activity。
6. `onRestart()`: 如果已停止的Activity重新变为可见,系统会先调用`onRestart()`,然后是`onStart()`和`onResume()`。
7. `onDestroy()`: Activity被销毁前的最后一步,可能是系统需要回收资源或用户主动关闭Activity。开发者在这个方法中进行清理工作,如取消定时器、解除绑定服务等。
在面试中,理解并能够熟练处理Activity生命周期是非常重要的。例如,当Activity被系统回收时,可以通过`onSaveInstanceState(Bundle outState)`方法保存关键数据,以便在重新创建时通过`onCreate(Bundle savedInstanceState)`或`onRestoreInstanceState(Bundle savedInstanceState)`恢复状态。而Intent作为Android中的通信使者,用于启动新的Activity、服务或广播接收者,是理解应用程序内部及不同组件间交互的关键。
面试中还可能涉及如何管理Activity栈(back stack),理解任务(task)和返回栈(back stack)的概念,以及如何通过Intent Flag控制Activity的行为,如FLAG_ACTIVITY_NEW_TASK、FLAG_ACTIVITY_CLEAR_TOP等。此外,了解如何处理配置变化(如屏幕方向切换)而不丢失状态也是重要的一环,这可能需要使用到`onConfigurationChanged(Configuration newConfig)`方法或在AndroidManifest.xml中声明不重启Activity。
深入理解Activity的生命周期、属性设定、系统回收处理和Intent的使用,对于Android开发者来说至关重要,这些知识点在面试中频繁出现,并且是构建高效、稳定应用的基础。
2021-03-24 上传
2021-11-16 上传
2021-10-19 上传
2021-10-11 上传
2020-03-25 上传
2022-09-14 上传
2021-12-23 上传
2021-10-19 上传
dtd13961139571
- 粉丝: 1
- 资源: 6万+
最新资源
- C++ Qt影院票务系统源码发布,代码稳定,高分毕业设计首选
- 纯CSS3实现逼真火焰手提灯动画效果
- Java编程基础课后练习答案解析
- typescript-atomizer: Atom 插件实现 TypeScript 语言与工具支持
- 51单片机项目源码分享:课程设计与毕设实践
- Qt画图程序实战:多文档与单文档示例解析
- 全屏H5圆圈缩放矩阵动画背景特效实现
- C#实现的手机触摸板服务端应用
- 数据结构与算法学习资源压缩包介绍
- stream-notifier: 简化Node.js流错误与成功通知方案
- 网页表格选择导出Excel的jQuery实例教程
- Prj19购物车系统项目压缩包解析
- 数据结构与算法学习实践指南
- Qt5实现A*寻路算法:结合C++和GUI
- terser-brunch:现代JavaScript文件压缩工具
- 掌握Power BI导出明细数据的操作指南