深入理解Android Activity生命周期
182 浏览量
更新于2024-08-31
收藏 267KB PDF 举报
"这篇文档详细讨论了Android中Activity的生命周期,包括销毁、暂停与恢复、停止与重启等关键环节,并提供了相关示例。"
在Android应用开发中,Activity是构成应用程序用户界面的基本单元,理解其生命周期至关重要。Activity的生命周期由一系列回调方法组成,这些方法在特定事件发生时被系统调用,确保应用能够有效地管理资源和用户交互。
1. 完整生命周期
- Resumed:这是Activity的活跃状态,用户可以直接与其交互,Activity位于栈顶,完全可见。
- Paused:当另一个Activity部分覆盖当前Activity(例如显示一个对话框)时,Activity进入暂停状态,虽然仍然部分可见,但不能接收用户输入。
- Stopped:Activity完全不可见,可能被其他Activity覆盖或者用户切换到其他应用,但其状态被保存,可以恢复。
- Created 和 Started:Activity创建始于onCreate(),接着是onStart(),最后是onResume()。onCreate()用于初始化,onStart()使Activity变得可见,onResume()则让用户可以与Activity交互。
2. 主Activity
主Activity是程序的入口点,通常作为启动界面。在AndroidManifest.xml中,通过以下方式声明主Activity:
```xml
<activity android:name=".MainActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
```
其中,`ACTION_MAIN` 表示它是启动动作,`CATEGORY_LAUNCHER` 意味着它可以从启动器(应用列表)启动。
3. 创建新的Activity实例
当启动新的Activity时,系统首先调用onCreate(),然后是onStart()和onResume()。开发者通常在onCreate()中设置UI、初始化数据和成员变量。为了快速显示界面,不应在onCreate()中执行过于复杂的操作。
4. 销毁Activity
Activity的销毁过程涉及onPause() -> onStop() -> onDestroy()。onDestroy()可能是系统为了回收资源而调用,也可能是开发者手动调用finish()。需要注意的是,系统并不保证一定会调用onDestroy(),因此不应依赖它来执行必要的清理工作。
5. 暂停与恢复
在Activity被部分或完全覆盖时,系统会调用onPause()。当Activity重新变为可见,会依次经过onRestart() -> onStart() -> onResume()。这些回调用于保存和恢复Activity的状态,确保用户返回时能看到一致的界面。
6. 停止与重启
当Activity完全不可见时,系统调用onStop()。如果用户能再次看到Activity,系统将调用onRestart() -> onStart(),之后再通过onResume()恢复交互状态。
理解并妥善处理这些生命周期回调对于开发高效、响应迅速且用户体验良好的Android应用至关重要。开发者需要根据需求在这些方法中编写合适的代码,确保Activity能够在不同状态下正确地保存和恢复其状态。
2019-04-11 上传
2019-07-29 上传
2017-07-11 上传
2019-04-06 上传
2011-10-13 上传
2021-01-20 上传
2014-11-25 上传
2021-09-21 上传
点击了解资源详情
weixin_38661087
- 粉丝: 3
- 资源: 979
最新资源
- 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插件介绍