你能够通过调用startActivity()方法来启动另外一个Activity,在调用这个方法时要给它传递一个你想要启动的描述Activity的Intent作为参数。这个Intent既可以确切的指定你想要启动的Activity,也可以是你想要执行的动作的类型的描述(系统会给你选择相应的Activity,甚至可以从不同的应用程序中选择)。Intent也能够携带少量的用于启动Activity所需的数据。
当在自己的应用程序中工作时,你会经常的需要简单加载一个已知的Activity,你能够使用类名,通过创建一个你想启动的明确定义的Activity的Intent来做这件事。例如,下面的例子说明了怎样启动一个名叫SignInActivity的Activity。
你的应用可能要执行诸如发送邮件、文本消息,或使用来自你的Activity的数据更新状态等动作,而你的应用程序中可能没有自己的执行这些动作的Activity,因此你能够使用设备上其他应用程序提供的Activity来替你执行这些动作,这是Intent的真正价值---你能够创建一个描述你想执行的动作的Intent,这样系统就会从其他应用程序中加载响应的的Activity。如果有多个能够处理这个Intent的Activity,那么用户能够选择其中之一来使用。例如,如果你想允许用户发送一个邮件消息,你能够创建下面这样的Intent:
附加给Intent的EXTRA_EMAIL是一个要发送邮件的邮件地址字符数组,当邮件应用程序响应这个Intent时,它会读附加物中提供的字符数组,然后把它们放到邮件格式的”to”字段中。在这个案例中,邮件应用程序的Activity被启动,当用户发送邮件,你的Activity被恢复。
为了某个结果启动一个Activity
某些时候,你可能想要接受来自你启动的Activity的执行结果,通过调用startActivityForResult()方法来启动Activity可以到达这个目的(而不是startActivity()方法)。要从后续的Activity中接受执行结果,你必须实现onActivityResult()回调方法,当后续的Activity执行完成,它会在Intent中返回一个结果给你的onActivityResult()方法。
例如,你也许想要用户来选择一个通讯录,以便你的Activity能够用这个通讯录做一些事情。下面的例子说明了怎样创建这样的Intent和处理这个结果:
这个列子展示了为了处理Activity结果在onActivityResult()方法中应该使用的基本逻辑。首先键请求结果是否成功---如果成功,那么resultCode将是RESULT_OK,同时判断响应的结果是否是请求已知的(在这个例子中,requestCode和用startActivityForResult()方法的第二个参数进行匹配),接下来,代码通过查询Intent返回的数据来处理Activity的返回结果。
ContentResolver执行的查询与内容提供的区别是,它返回一个允许查询数据的游标来读取数据,关于更多信息,请查看Content Providers(内容提供器)文档。
关于使用Intent的更多信息,请查看Intents and Intent Filters(Intents和Intent过滤器)文档
注:本人转载系个人觉得翻译的很好,值得收藏,且自己回头看着方便。
如有兴趣请访问作者官方博客http://blog.csdn.net/FireOfStar
分享到:
相关推荐
然而,有时候开发者可能需要在不改变原始Activity的基础上实现不同的功能或者提供不同的入口,这时Android系统提供的Activity别名(Activity-alias)就能派上用场。本文将详细讲解如何在Android中使用Activity别名,...
总的来说,这个“android-framgentActivity--demo”项目是一个很好的学习资源,它向开发者展示了如何在Android应用中有效地利用FragmentActivity和TabHost组件,实现多视图交互和更灵活的界面设计,同时兼容较低版本...
在深入探讨"ANDROID-Activity--exit.zip_android"这个主题之前,我们需要理解Activity的基本概念及其生命周期。 Activity是一个可以与用户进行交互的可视组件。每个Activity都有一个与之关联的布局文件,用于定义...
总结,"inline-activity-result"项目为Android应用开发者提供了一种优雅的方式,以更简洁的代码实现Activity间的通信。通过内联回调,开发者可以专注于业务逻辑,提升代码质量,降低维护成本。对于追求代码简洁性的...
了解和掌握不同的Activity启动模式对于优化应用程序的行为至关重要。本文将详细讲解四种主要的Activity启动模式:standard、singleTop、singleTask以及singleInstance,并通过实际案例分析它们的应用场景。 1. ...
### 一、Intent启动Activity #### 1. 显式启动 显式启动是通过Intent明确指定要启动的Activity的类名。创建Intent时,你需要在构造函数中传入当前Activity(`this`)和目标Activity的Class对象,如下所示: ```...
Activity启动模式设置: <activity android:name=".MainActivity"android:launchMode="standard" /> Activity的四种启动模式: 1.standard 模式启动模式,每次激活Activity时都会创建Activity,并放入任务栈中。 ...
`Android Hook Activity 启动劫持`是一种高级技术,它允许开发者利用动态代理(Dynamic Proxy)技术来拦截并控制AMS的行为,从而在不修改系统源码的情况下,实现对Activity启动流程的监控或修改。 首先,我们需要...
了解如何启动、跳转和管理Activity是Android开发的基础。 3. **意图(Intent)机制**:在"谁是歌手"应用中,Intent用于在不同的组件之间传递信息,比如启动新的Activity或者服务。理解Intent的使用是理解和控制应用...
"Android ActivityManagerService 源码分析----Activity 管理" Android ActivityManagerService 是 Android 系统中负责管理 Activity 生命周期的核心组件之一。它提供了一个 ArrayList mHistory 来管理所有的 ...
这个主题“Android基础-2(Activity)”深入讲解了Activity的关键概念,包括其创建、注册、启动、关闭以及生命周期,同时也关注了如何在特定时刻保存Activity的状态。下面将详细阐述这些知识点。 首先,创建一个...
Intent是启动Activity的媒介,它可以携带数据,并指定要启动的目标Activity。分为显式Intent(指定确切的Activity类名)和隐式Intent(只指定操作和数据类型,由系统根据Intent Filter匹配合适的Activity)。 **...
在Android应用开发中,`Service`和`Activity`是两个重要的组件。`Service`用于在后台执行长时间运行的任务,而`Activity`则负责用户界面交互。在某些场景下,我们可能需要在`Service`和`Activity`之间传递数据,比如...
#### 2.3 App->Activity->Animation 该章节讲解了动画在Activity中的应用,包括但不限于淡入淡出效果、缩放动画等。这些动画效果可以让用户界面变得更加生动有趣,提高用户体验。 #### 2.4 App->Activity->...
在启动Activity时,Intent可以携带数据,如通过putExtra()方法添加键值对,这些数据可以在目标Activity中通过getExtras()获取。启动Service时,Intent同样能传递数据,使Service能够根据这些信息执行相应任务。 在...
目的: 1. 掌握activity组件生命周期函数的用法 ...定Activity A为启动Activity。 2、修改 Activity 的启动模式 LaunchMode,并通过 Log 信息来体会不同启动模式所对应的 Activity 和 task 的关系
2、启动activity-显示启动和隐式启动: 3、隐式启动自己的activity 4、获取隐启动传递过来的data数据 5、显示启动传递数据 6、禁用掉横竖屏切换 7、开启activity获取返回值-startActivityForResult:
2、需要在Activity启动前完成各种数据的部署,然后查看Activity的效果。 对于这两种需求,笔者分别做了两个示例解说: 1、检测一个布局中的button和TextView是否正确。 2、从网络动态获取String到Activity界面显示...
- `getRunningTasks()`方法在Android 4.0(API 16)之后逐渐受到限制,对于非系统应用,只能获取到自己启动的Activity信息。因此,在高版本Android系统中,获取TopActivity可能需要其他方式,如使用`...
它主要的功能之一就是处理应用中的Activity启动请求。在`ActivityThread`中有几个关键的方法与Activity的生命周期密切相关: - **handleLaunchActivity**: 当一个新的Activity需要被启动时,`ActivityThread`会调用...