Android Activity生命周期详解:启动、焦点切换与销毁过程
2星 需积分: 31 84 浏览量
更新于2024-09-13
收藏 1.88MB PPT 举报
Android应用程序中的Activity是核心组件,它们是用户与应用交互的主要界面。每个Activity都有自己的生命周期,这是一个关键的概念,因为它决定了何时创建、暂停、恢复或销毁这些界面。在本文中,我们将深入探讨Activity的定义、其在应用程序中的作用以及它的生命周期过程。
首先,Activity可以理解为一个可展示用户界面并接收用户输入的独立模块。在AndroidManifest.xml文件中,开发者通过指定`<activity>`标签来定义Activity,如`<activity android:label="@string/app_name" android:name=".MainActivity">`。主Activity通常是用户初次打开应用时显示的界面,并且在`<intent-filter>`中通过`<action android:name="android.intent.action.MAIN">`和`<category android:name="android.intent.category.LAUNCHER">`来标记为应用程序的入口点。
当应用程序首次运行时,用户的关注点通常落在启动的第一个Activity(即主Activity)上。当用户启动其他Activity时,当前Activity进入后台暂停状态,新Activity则接管屏幕并置于任务栈的顶部。按回退键时,系统遵循栈的“后进先出”原则,关闭当前Activity,恢复前一个Activity到前台。
Activity生命周期包含七个关键方法,它们在不同的阶段被调用:
1. `onCreate(Bundle savedInstanceState)`:当Activity被创建时,这是第一个被调用的方法,用于初始化所有UI元素和数据。
2. `onStart()`:Activity被添加到任务栈,用户可以看到它,但可能不完全可见,比如在其他Activity打开时。
3. `onRestart()`:如果之前已经启动过并被销毁,再次启动时调用此方法。
4. `onResume()`:Activity变为活动状态,用户界面完全可见,且获得焦点。
5. `onPause()`:当Activity失去焦点,但仍然在后台可访问,例如切换到另一个Activity或接电话时。
6. `onStop()`:Activity完全退回到后台,但仍保留着在内存中。
7. `onDestroy()`:当用户不再需要该Activity,系统会调用此方法,清理资源并准备销毁。
Activity生命周期主要分为三个阶段:
- **开始阶段**:依次执行`onCreate`、`onStart`和`onResume`方法,这是Activity从无到有的创建过程。
- **重新获得焦点阶段**:如果先前的Activity返回,Activity会经历`onRestart`、`onStart`和`onResume`,以便重新加载并显示。
- **关闭阶段**:当用户选择离开或者系统决定关闭Activity(如内存不足),`onPause`、`onStop`和最终的`onDestroy`会被调用,释放资源并从内存中移除。
理解Activity的生命周期对于优化性能、管理内存和提供流畅用户体验至关重要。开发者需要根据各个阶段的特点,正确地安排代码逻辑,确保资源的有效管理和用户界面的无缝切换。
2015-09-07 上传
2016-01-14 上传
2011-07-05 上传
2016-06-22 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
daisuo2599
- 粉丝: 4
- 资源: 115
最新资源
- 火炬连体网络在MNIST的2D嵌入实现示例
- Angular插件增强Application Insights JavaScript SDK功能
- 实时三维重建:InfiniTAM的ros驱动应用
- Spring与Mybatis整合的配置与实践
- Vozy前端技术测试深入体验与模板参考
- React应用实现语音转文字功能介绍
- PHPMailer-6.6.4: PHP邮件收发类库的详细介绍
- Felineboard:为猫主人设计的交互式仪表板
- PGRFileManager:功能强大的开源Ajax文件管理器
- Pytest-Html定制测试报告与源代码封装教程
- Angular开发与部署指南:从创建到测试
- BASIC-BINARY-IPC系统:进程间通信的非阻塞接口
- LTK3D: Common Lisp中的基础3D图形实现
- Timer-Counter-Lister:官方源代码及更新发布
- Galaxia REST API:面向地球问题的解决方案
- Node.js模块:随机动物实例教程与源码解析