Android开发:Activity与Fragment生命周期详解
需积分: 0 76 浏览量
更新于2024-08-04
收藏 447KB DOCX 举报
"19151633_应宇杰_Android期末文档1"
在Android应用程序开发中,Activity是用户界面的主要组件,它代表了用户可以与之交互的单个屏幕。理解Activity的生命周期至关重要,因为它决定了Activity何时以及如何进行资源的创建、更新和释放。以下是关于Activity生命周期的详细解释:
1. 启动Activity:当一个新的Activity启动时,系统首先调用onCreate()方法,这是Activity生命周期的第一个回调,用于进行初始设置,如初始化视图、设置布局等。接着调用onStart()方法,Activity开始变得对用户可见,但还没有完全显示。最后调用onResume()方法,此时Activity完全可见并开始接收用户输入。
2. 当前Activity被其他Activity覆盖或被锁屏:系统会调用onPause()方法,这个阶段Activity仍然部分可见,但不再接收大部分用户输入。锁屏或新Activity的启动会导致这个状态。
3. 由被覆盖状态回到前台或解锁屏:Activity将调用onResume()方法,重新获取焦点并完全可见。
4. Activity转到新界面或按Home键:首先调用onPause(),然后调用onStop(),Activity变为不可见,资源可能被释放以优化性能。
5. 用户返回此Activity:系统会调用onRestart(),恢复Activity,接着调用onStart(),最后调用onResume(),使Activity重新进入运行状态。
6. 在内存不足的情况下,系统可能会杀死后台的Activity。当用户返回时,Activity将从onCreate()开始重建,接着是onStart()和onResume(),确保Activity状态的恢复。
7. 退出Activity:用户操作如按下Back键或调用finish()时,系统首先调用onPause(),然后是onStop(),最后是onDestroy(),标志着Activity的彻底结束。
Fragment是Activity的一个补充,它允许在单个Activity中构建更复杂的用户界面。Fragment有自己的生命周期,但受到所处Activity的影响。Fragment有三种主要状态:
- Resumed:Fragment可见且活跃,可以接收用户输入。
- Paused:所在Activity可见,但不具有焦点,例如在对话框Fragment之上或Activity正在后台。
- Stopped:Fragment不再可见,可能是因为Activity转向后台,或Fragment被替换或删除。在这种情况下,Fragment可以通过BackStack恢复。
需要注意的是,虽然Fragment可以嵌套在另一个Fragment中,但这种做法并不推荐,因为这样会增加复杂性,并可能导致生命周期管理的问题。最佳实践是保持Fragment的独立性,直接将其嵌入Activity中。当处理Fragment的生命周期时,要特别注意在适当的方法中保存和恢复状态,以防止数据丢失。同时,合理地管理Activity和Fragment之间的通信也非常重要,这通常通过接口回调或EventBus等方式实现。
2022-08-08 上传
2022-08-08 上传
2022-08-08 上传
2022-08-08 上传
2022-08-08 上传
2022-08-08 上传
2022-08-08 上传
2023-06-13 上传
苗苗小姐
- 粉丝: 41
- 资源: 328
最新资源
- 开源通讯录备份系统项目,易于复刻与扩展
- 探索NX二次开发:UF_DRF_ask_id_symbol_geometry函数详解
- Vuex使用教程:详细资料包解析与实践
- 汉印A300蓝牙打印机安卓App开发教程与资源
- kkFileView 4.4.0-beta版:Windows下的解压缩文件预览器
- ChatGPT对战Bard:一场AI的深度测评与比较
- 稳定版MySQL连接Java的驱动包MySQL Connector/J 5.1.38发布
- Zabbix监控系统离线安装包下载指南
- JavaScript Promise代码解析与应用
- 基于JAVA和SQL的离散数学题库管理系统开发与应用
- 竞赛项目申报系统:SpringBoot与Vue.js结合毕业设计
- JAVA+SQL打造离散数学题库管理系统:源代码与文档全览
- C#代码实现装箱与转换的详细解析
- 利用ChatGPT深入了解行业的快速方法论
- C语言链表操作实战解析与代码示例
- 大学生选修选课系统设计与实现:源码及数据库架构