Android面试必备:Activity生命周期详解
需积分: 9 187 浏览量
更新于2024-09-15
收藏 323KB PDF 举报
"Android面试题和答案"
Android是一个广泛使用的开源操作系统,主要应用于移动设备,如智能手机和平板电脑。面试中,对于Android开发者来说,理解Activity和其生命周期是至关重要的。以下是对这些概念的详细解释:
Activity是Android应用程序中的基本构建块,它代表用户界面上的一个屏幕。一个应用可能包含多个Activity,每个Activity都有自己的布局和功能。布局通常通过XML文件定义,存放在项目的`res/layout`目录下。为了使Activity能够在应用中运行,需要在`AndroidManifest.xml`文件中对其进行注册。
Activity的生命周期分为几个关键阶段,包括:
1. `onCreate(Bundle savedInstanceState)`:这是Activity生命周期的第一个方法,当Activity首次创建时调用。在此阶段,应用应完成初始化工作,例如设置视图、绑定事件监听器等。`savedInstanceState`参数用于在配置更改时恢复之前的状态。
2. `onStart()`:当Activity变得对用户可见但不一定是焦点时调用。从这里开始,用户可以看到Activity,但可能被其他Activity遮挡。
3. `onResume()`:Activity进入前台并与用户开始交互时调用。这是用户界面活跃且可接收输入的阶段。
4. `onPause()`:当Activity失去焦点,即将被另一个Activity覆盖时调用。应用应在这里保存数据,因为用户可能会离开此Activity。
5. `onStop()`:当Activity完全不可见时调用,如新Activity启动或系统需要回收资源时。在此阶段,大部分视图和数据应被保存。
6. `onRestart()`:如果已停止的Activity重新启动,会先调用此方法,然后是`onStart()`。
7. `onDestroy()`:Activity即将从系统中彻底移除时调用,这是生命周期的最后一步。
在两个Activity之间进行跳转时,必然涉及的方法有:
- `onCreate()`:新Activity创建时调用。
- `onStart()`:新Activity变为对用户可见时调用。
- `onResume()`:新Activity开始与用户交互时调用。
- `onPause()`:前一个Activity被暂停,为新Activity的启动做准备。
- `onStop()`:前一个Activity不再可见时调用。
横竖屏切换时,Activity的生命周期取决于在`AndroidManifest.xml`中如何处理配置变化。如果不设置`android:configChanges`属性,系统默认会销毁并重建Activity,依次调用`onPause()`、`onStop()`、`onDestroy()`,然后在新方向上创建Activity时调用`onCreate()`、`onStart()`和`onResume()`。如果设置了`android:configChanges="orientation"`,Activity将不被销毁,而是直接调用`onConfigurationChanged()`方法来处理配置更改。这样可以避免重建Activity导致的数据丢失和性能开销。但需要注意的是,处理所有配置变化的责任将落在应用本身。
110 浏览量
2020-02-23 上传
2022-07-14 上传
2021-09-15 上传
2024-01-25 上传
2015-01-11 上传
2013-10-04 上传
2015-11-04 上传
tangpeng1121
- 粉丝: 1
- 资源: 94
最新资源
- SSM动力电池数据管理系统源码及数据库详解
- R语言桑基图绘制与SCI图输入文件代码分析
- Linux下Sakagari Hurricane翻译工作:cpktools的使用教程
- prettybench: 让 Go 基准测试结果更易读
- Python官方文档查询库,提升开发效率与时间节约
- 基于Django的Python就业系统毕设源码
- 高并发下的SpringBoot与Nginx+Redis会话共享解决方案
- 构建问答游戏:Node.js与Express.js实战教程
- MATLAB在旅行商问题中的应用与优化方法研究
- OMAPL138 DSP平台UPP接口编程实践
- 杰克逊维尔非营利地基工程的VMS项目介绍
- 宠物猫企业网站模板PHP源码下载
- 52简易计算器源码解析与下载指南
- 探索Node.js v6.2.1 - 事件驱动的高性能Web服务器环境
- 找回WinSCP密码的神器:winscppasswd工具介绍
- xctools:解析Xcode命令行工具输出的Ruby库