Android面试必备:Activity生命周期详解与横竖屏切换分析
需积分: 9 47 浏览量
更新于2024-09-16
2
收藏 323KB PDF 举报
"此资源是一份关于Android面试题和答案的文档,主要涵盖了Android中的Activity生命周期、屏幕旋转时Activity的变化情况等内容,适合面试准备和自学使用。"
在Android开发中,Activity是应用程序的主要组件,它代表用户界面上的一个独立视图。当我们谈论Activity的生命周期时,我们是指从创建到销毁的过程中,Activity经历的一系列状态变化。以下是Activity生命周期的主要方法:
1. `onCreate(Bundle savedInstanceState)`:这是Activity生命周期的第一个方法,当Activity首次创建时调用。在这里,通常会进行布局加载和初始化工作,`savedInstanceState`参数用于恢复之前保存的状态。
2. `onStart()`:Activity变得对用户可见时调用,但还未完全显示在屏幕上。
3. `onResume()`:Activity进入前台并与用户交互,此时用户可以与其进行操作。
4. `onPause()`:当Activity即将被另一个Activity覆盖或者用户焦点转移时调用,用于保存数据和释放资源,但Activity仍然可见。
5. `onStop()`:Activity完全不可见时调用,例如用户打开新的Activity或者设备屏幕熄灭。
6. `onRestart()`:如果Activity被暂停后重新启动,会先调用此方法,然后是`onStart()`。
7. `onDestroy()`:Activity将从系统中移除时调用,可能是用户关闭或系统因内存不足而销毁Activity。
当Activity横竖屏切换时,其生命周期的变化取决于`android:configChanges`属性的设置:
1. **不设置**:系统默认行为,Activity会被销毁并重新创建,执行完整的生命周期:`onPause()` -> `onStop()` -> `onDestroy()` -> `onCreate()` -> `onStart()` -> `onResume()`。横屏和竖屏切换各执行一次。
2. **设置为`orientation`**:Activity配置变化时,系统不会销毁Activity,而是调用`onConfigurationChanged()`方法,执行`onPause()` -> `onConfigurationChanged()` -> `onResume()`。横竖屏切换各执行一次。
3. **设置为`orientation|keyboardHidden`**:配置变化时,Activity不会被重建,只调用`onConfigurationChanged()`方法,不会经过`onDestroy()`等其他生命周期方法。
在两个Activity之间的跳转过程中,一定会被执行的方法包括:
- `onCreate()`:新Activity创建时调用。
- `onStart()`:新Activity变得可见时调用。
- `onResume()`:新Activity与用户开始交互时调用。
- 对于前一个Activity,可能调用`onPause()`、`onStop()`、`onDestroy()`,具体取决于是否被系统回收或是否需要保存状态。
理解并熟练掌握Activity的生命周期和屏幕旋转时的行为对于编写健壮的Android应用至关重要,因为这有助于确保在不同场景下应用的正确运行和用户体验。在面试中,这些都是常见的考察点,同时也是开发者应具备的基础技能。
110 浏览量
2020-02-23 上传
2022-07-14 上传
2021-09-15 上传
2024-01-25 上传
2015-01-11 上传
2013-10-04 上传
2015-11-04 上传
shifuhetudi
- 粉丝: 59
- 资源: 91
最新资源
- Fisher Iris Setosa数据的主成分分析及可视化- Matlab实现
- 深入理解JavaScript类与面向对象编程
- Argspect-0.0.1版本Python包发布与使用说明
- OpenNetAdmin v09.07.15 PHP项目源码下载
- 掌握Node.js: 构建高性能Web服务器与应用程序
- Matlab矢量绘图工具:polarG函数使用详解
- 实现Vue.js中PDF文件的签名显示功能
- 开源项目PSPSolver:资源约束调度问题求解器库
- 探索vwru系统:大众的虚拟现实招聘平台
- 深入理解cJSON:案例与源文件解析
- 多边形扩展算法在MATLAB中的应用与实现
- 用React类组件创建迷你待办事项列表指南
- Python库setuptools-58.5.3助力高效开发
- fmfiles工具:在MATLAB中查找丢失文件并列出错误
- 老枪二级域名系统PHP源码简易版发布
- 探索DOSGUI开源库:C/C++图形界面开发新篇章