Android面试关键知识点:Activity生命周期详解
需积分: 9 88 浏览量
更新于2024-09-11
收藏 323KB PDF 举报
"Android面试题和答案"
在Android开发领域,面试中经常涉及到关于Activity的基础知识,这包括了Activity的概念、生命周期以及在不同场景下的行为。以下是对这些知识点的详细解释:
1. 什么是Activity?
Activity是Android应用中的一个核心组件,它代表了用户界面的一个屏幕。在Android应用中,你可以有多个Activity,每个Activity都有自己的布局文件,通常存储在`res/layout`目录下。Activity是用户与应用交互的主要入口点,它可以包含各种视图组件,如按钮、文本框等。
2. Activity生命周期
- `onCreate(Bundle savedInstanceState)`:当Activity首次创建时调用,用于初始化UI和设置初始状态。`savedInstanceState`参数允许恢复之前保存的Activity状态。
- `onStart()`:Activity从不可见变到可见时调用,标志着Activity开始对用户可见。
- `onResume()`:用户可以与Activity交互时调用,此时Activity处于前台且具有焦点。
- `onPause()`:当Activity即将被另一个Activity覆盖或者用户离开时调用,通常用于保存临时状态。
- `onStop()`:当Activity完全不可见时调用,可能被销毁或者只是被其他Activity覆盖。
- `onRestart()`:如果Activity已停止但需要重新启动,会先调用此方法。
- `onDestroy()`:Activity将被彻底移除时调用,是Activity生命周期的最后阶段。
3. Activity之间的跳转
在两个Activity之间进行跳转时,必定会经历以下几个方法:
- `onPause()`:在跳转前,当前Activity会被暂停。
- `onSaveInstanceState(Bundle outState)`:如果需要保存UI状态,此方法会在`onPause()`之前调用。
- `onStop()`:当前Activity变得不可见时调用。
- `onDestroy()`:在某些情况下,当前Activity可能会被销毁。
- 对新启动的Activity:
- `onCreate(Bundle savedInstanceState)`:新Activity创建。
- `onStart()`:新Activity变得可见。
- `onResume()`:新Activity开始与用户交互。
4. 横竖屏切换时Activity的生命周期
如果不指定`android:configChanges`属性,横竖屏切换会导致Activity的完整生命周期重建,即`onCreate()`、`onStart()`、`onResume()`会被再次调用。为了避免不必要的重建,开发者可以在AndroidManifest.xml中为Activity添加`android:configChanges="orientation|screenSize"`,然后在Activity中重写`onConfigurationChanged(Configuration newConfig)`方法来处理配置变化。
理解并掌握Activity的这些基础知识对于Android开发者来说至关重要,因为它们直接影响到应用的性能、用户体验以及数据的正确保存和恢复。在面试中,深入理解Activity生命周期及其在不同场景下的表现,往往能体现开发者的专业程度。
111 浏览量
2020-02-23 上传
2022-07-14 上传
2021-09-15 上传
2024-01-25 上传
2015-01-11 上传
2015-11-04 上传
2013-10-04 上传
帅气的东哥
- 粉丝: 1212
- 资源: 224
最新资源
- C语言数组操作:高度检查器编程实践
- 基于Swift开发的嘉定单车LBS iOS应用项目解析
- 钗头凤声乐表演的二度创作分析报告
- 分布式数据库特训营全套教程资料
- JavaScript开发者Robert Bindar的博客平台
- MATLAB投影寻踪代码教程及文件解压缩指南
- HTML5拖放实现的RPSLS游戏教程
- HT://Dig引擎接口,Ampoliros开源模块应用
- 全面探测服务器性能与PHP环境的iprober PHP探针v0.024
- 新版提醒应用v2:基于MongoDB的数据存储
- 《我的世界》东方大陆1.12.2材质包深度体验
- Hypercore Promisifier: JavaScript中的回调转换为Promise包装器
- 探索开源项目Artifice:Slyme脚本与技巧游戏
- Matlab机器人学习代码解析与笔记分享
- 查尔默斯大学计算物理作业HP2解析
- GitHub问题管理新工具:GIRA-crx插件介绍