Android Activity与Intent深度解析:生命周期与实战示例
58 浏览量
更新于2024-08-28
收藏 111KB PDF 举报
"本文详细介绍了Android中的核心组件Activity和Intent的使用,包括Activity的生命周期和Intent的分类。通过示例代码展示了如何在不同场景下运用这些概念。"
在Android开发中,Activity是用户界面的主要构成部分,它代表了一个可视化的用户交互界面。Service则是在后台运行的组件,而BroadcastReceiver用于接收并响应系统或应用广播事件。这三者都可以通过Intent进行启动和通信。
Intent是Android中的一种重要机制,它用来表示应用中不同组件之间的交互意愿。Intent分为显式Intent和隐式Intent两种类型。显式Intent明确指定了要启动的组件名称,通常在同一应用程序内的不同Activity之间使用。而隐式Intent并不指定特定组件,而是根据Intent中的Action、Data、Category等信息匹配系统中能够处理该Intent的任何组件,这使得调用系统服务或者第三方应用成为可能。
Activity的生命周期由以下几个关键方法组成:
1. onCreate():Activity首次创建时调用,用于初始化UI和数据。
2. onStart():当Activity变得对用户可见时调用。
3. onResume():Activity获取焦点并准备与用户交互时调用。
4. onPause():当Activity即将被另一个Activity覆盖或用户离开时调用,此阶段应该快速执行,因为系统可能会在此时暂停或销毁Activity。
5. onStop():当Activity完全不可见时调用,不再占用用户界面资源。
6. onDestroy():Activity被彻底销毁前调用,可能是用户关闭或系统回收内存时。
在示例中,当从Activity1跳转到Activity2时,Activity1经历onPause()、onStop()和onDestroy()。如果在Activity2中调用finish()返回Activity1,则Activity2会经历onPause()、onStop()和onDestroy(),而Activity1则会经历onRestart()、onStart()和onResume()。
为了在项目中添加新的Activity,开发者需要在AndroidManifest.xml文件的<application>标签内声明新Activity。例如,对于名为Activity2的新Activity,声明如下:
```xml
<activity android:name=".Activity2">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
```
这段代码定义了Activity2,并设置了它作为应用程序的入口点,可以通过LAUNCHER类别在应用启动器中显示。
此外,Intent可以携带数据通过Bundle对象传递。例如,创建一个Intent并附带数据:
```java
Intent intent = new Intent(this, Activity2.class);
Bundle bundle = new Bundle();
bundle.putString("key", "value");
intent.putExtras(bundle);
startActivity(intent);
```
在目标Activity中,可以这样接收数据:
```java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Intent intent = getIntent();
Bundle bundle = intent.getExtras();
if (bundle != null) {
String value = bundle.getString("key");
// 使用接收到的数据
}
}
```
理解Activity的生命周期和Intent的工作原理是Android开发的基础,这有助于构建高效且用户体验良好的应用。通过熟练掌握这些概念,开发者能够更好地控制应用的行为,实现各种复杂的功能。
2011-01-30 上传
点击了解资源详情
2020-09-01 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
2012-02-20 上传
2020-08-31 上传
weixin_38713167
- 粉丝: 6
- 资源: 938
最新资源
- Haskell编写的C-Minus编译器针对TM架构实现
- 水电模拟工具HydroElectric开发使用Matlab
- Vue与antd结合的后台管理系统分模块打包技术解析
- 微信小游戏开发新框架:SFramework_LayaAir
- AFO算法与GA/PSO在多式联运路径优化中的应用研究
- MapleLeaflet:Ruby中构建Leaflet.js地图的简易工具
- FontForge安装包下载指南
- 个人博客系统开发:设计、安全与管理功能解析
- SmartWiki-AmazeUI风格:自定义Markdown Wiki系统
- USB虚拟串口驱动助力刻字机高效运行
- 加拿大早期种子投资通用条款清单详解
- SSM与Layui结合的汽车租赁系统
- 探索混沌与精英引导结合的鲸鱼优化算法
- Scala教程详解:代码实例与实践操作指南
- Rails 4.0+ 资产管道集成 Handlebars.js 实例解析
- Python实现Spark计算矩阵向量的余弦相似度