Android中的Intent是什么? 有人能举个例子吗? intent的类型是什么,我们为什么要使用它们? 为什么intent在Android中如此重要?
当前回答
Intent是一个类,用来绑定执行某些操作的信息。
示例:当用户在活动中执行此类操作时,将数据从一个活动传递给另一个活动
目前的活动。
其他回答
Intent是执行某个动作的“意图”;换句话说,
可用于从另一个应用程序组件请求操作的消息传递对象
一个意图基本上是一个信息,说你已经或想要某事发生。根据意图,应用程序或操作系统可能会监听它,并做出相应的反应。你可以把它当成是发给一群朋友的电子邮件,告诉你的朋友John去做某事,或者告诉那些可以做X(“意图过滤器”)的朋友去做X。其他人会忽略这封邮件,但是John(或那些可以做X的朋友)会对它做出反应。
为了监听广播意图(如电话铃声或收到短信),您实现了一个广播接收器,它将被传递意图。为了声明你可以处理另一个应用程序的意图,比如“拍照”,你在应用程序的manifest文件中声明一个意图过滤器。
如果你想发射一个意图去做某事,比如弹出拨号器,你发射一个意图说你会。
从广义上看,我们可以将Intent定义为
当一个Activity想要启动另一个Activity时,它会创建一个Object Intent指定它想要启动哪个Activity。
根据他们的文件:
Intent是一个在独立组件(比如两个活动)之间提供运行时绑定的对象。Intent表示应用程序的“做某事的意图”。你可以在各种各样的任务中使用intent,但最常见的是它们被用来启动另一个活动。
下面是示例链接: http://developer.android.com/training/basics/firstapp/starting-activity.html#BuildIntent
正如文档所描述的,为了启动一个活动(你还需要理解什么是活动),使用如下的意图
/** Called when the user clicks the Send button */
public void sendMessage(View view) {
Intent intent = new Intent(this, DisplayMessageActivity.class);
EditText editText = (EditText) findViewById(R.id.edit_message);
String message = editText.getText().toString();
intent.putExtra(EXTRA_MESSAGE, message);
startActivity(intent);
}
Android的意图
Android Intent让你从一个Android活动导航到另一个。通过示例,本教程还讨论了各种类型的Android意图。
Android Intent可以定义为一个简单的消息对象,用于从一个活动通信到另一个活动。
意图定义应用程序的意图。它们还用于在活动之间传输数据。
一个Android Intent可以用来执行以下3个任务:
从当前活动打开另一个活动或服务 在活动和服务之间传递数据 将责任委托给另一个应用程序。例如,你可以 使用intent打开浏览器应用程序以显示URL。
意图大致可以分为两类。这个类别没有关键字,只是对android意图的使用进行了广泛的分类。
明确的Android意图
显式Android Intent是你显式定义Android系统需要调用的组件的Intent。
Intent MoveToNext = new Intent (getApplicationContext(), SecondActivity.class);
隐含的Android意图
隐式Android意图不是定义确切的组件,而是定义你想要执行的动作。处理这个操作的决定留给了操作系统。操作系统决定哪个组件最适合用于隐式目的。 让我们看一个例子:
Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
欲了解更多信息,请访问下面
http://developer.android.com/reference/android/content/Intent.html
什么是意图?
Intent基本上是在组件(如活动、服务、广播接收器和内容提供者)之间传递的消息。因此,它几乎等同于传递给API调用的参数。API调用和通过意图调用组件之间的基本区别是:
API调用是同步的,而基于意图的调用是同步的 异步的。 API调用是编译时绑定,而基于意图的调用是 运行时绑定。
当然,通过使用所谓的显式意图(explicit intent),可以使intent完全像API调用一样工作,这将在后面解释。但通常情况下,隐式意图是可行的,这就是这里所解释的。
想要调用另一个组件的组件必须只表达其执行任务的意图。而任何其他存在的组件,并声称它可以通过意图过滤器完成这样的工作,由Android平台调用来完成这项工作。这意味着,两个组件都不知道彼此的存在,但仍然可以一起工作,为最终用户提供所需的结果。
这种组件之间的隐形连接是通过意图、意图过滤器和Android平台的组合来实现的。
这就带来了巨大的可能性,比如:
在运行时混合和匹配或者更确切地说即插即用组件。 用自定义开发的应用程序替换内置的Android应用程序 应用程序。 应用程序内部和应用程序之间的组件级重用。 如果我可以这么说的话,面向服务到最细粒度的级别。
以下是Android文档中关于intent的额外技术细节。
An intent is an abstract description of an operation to be performed. It can be used with startActivity to launch an Activity, broadcastIntent to send it to any interested BroadcastReceiver components, and startService(Intent) or bindService(Intent, ServiceConnection, int) to communicate with a Background Service. An Intent provides a facility for performing late runtime binding between the code in different applications. Its most significant use is in the launching of activities, where it can be thought of as the glue between activities. It is basically a passive data structure holding an abstract description of an action to be performed. The primary pieces of information in an intent are: action The general action to be performed, such as ACTION_VIEW, ACTION_EDIT, ACTION_MAIN, etc. data The data to operate on, such as a person record in the contacts database, expressed as a Uri.
了解更多
Lars Vogel的教程 ProgrammerGuru文章 普遍的意图
推荐文章
- 如何分配文本大小在sp值使用java代码
- Manifest合并失败:uses-sdk:minSdkVersion 14
- 为什么Android工作室说“等待调试器”如果我不调试?
- 如何检查我的EditText字段是否为空?
- Android从图库中选择图像
- 后台任务,进度对话框,方向改变-有任何100%工作的解决方案吗?
- Android:垂直对齐多行EditText(文本区域)
- Android无尽列表
- Android room persistent: AppDatabase_Impl不存在
- 错误:执行失败的任务':app:compileDebugKotlin'。>编译错误。详细信息请参见日志
- 在Android中使用URI生成器或使用变量创建URL
- 缩放图像以填充ImageView宽度并保持纵横比
- 列表视图的自定义适配器
- 在Android中设置TextView span的颜色
- 如何以编程方式在RelativeLayout中布局视图?