Android Activity与Intent深度解析:生命周期与实战示例
132 浏览量
更新于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 上传
点击了解资源详情
2021-01-05 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
2012-02-20 上传
2020-08-31 上传
weixin_38713167
- 粉丝: 6
- 资源: 938
最新资源
- 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插件介绍