Android的意图是什么?
- Android的意图是什么?
- 有人可以用一个例子来详细说明吗?
- 意图的types是什么,以及我们为什么使用它们?
- 为什么intents在Android中如此重要?
意图是执行行动的“意图”; 换一种说法,
您可以使用消息传递对象来请求其他应用程序组件的操作
一个意图基本上是一个消息,说你做了或想要发生的事情。 根据意图,应用程序或操作系统可能正在监听,并会作出相应的反应。 把它看作是一堆朋友的爆炸邮件,其中你告诉你的朋友约翰做某事,或者给可以做X的朋友( “意图filter” )做X.其他人会忽略电子邮件,但约翰(或能做X的朋友)会对此做出反应。
要收听广播意图(如电话铃声,或收到短信),您需要实现一个广播接收器 ,这将通过意图。 为了声明你可以像“拍照”那样处理别人的应用程序意图,你可以在应用程序的清单文件中声明一个意图filter 。
如果你想发射一个意图做某事的东西,就像popup拨号器一样,你会发出一个意图,说你会的。
什么是意图?
Intent基本上是组件之间传递的消息(比如活动 , 服务,广播接收者和内容提供者 )。 所以,这几乎等同于传递给API调用的参数。 API调用和通过意图调用组件之间的根本区别是:
- API调用是同步的,而基于意图的调用是asynchronous的。
- API调用是编译时绑定,而基于意图的调用是运行时绑定。
当然,Intents可以通过使用所谓的显式意图来完全像API调用一样工作,这将在后面解释。 但更多的时候, 隐含的意图是要走的路,这就是在这里解释的。
一个想调用另一个的组件只能expression它的意图去做一份工作。 而任何其他存在并声称可以通过意图filter来完成这样的工作的组件都会被Android平台调用来完成这项工作。 这意味着,任何组件都不知道对方的存在,但仍然可以一起工作,为最终用户提供期望的结果。
组件之间的这种不可见的联系是通过意图,意图filter和Android平台的组合来实现的。
这导致了巨大的可能性,如:
- 在运行时混合和匹配,或者相当于组件的即插即用。
- 用定制开发的应用程序replace内置的Android应用程序。
- 应用程序内和应用程序之间的组件级重用
- 如果我可以说,服务导向到最细化的层次。
以下是Android文档中有关Intents的其他技术细节。
意图是要执行的操作的抽象描述。 它可以与startActivity一起使用来启动一个Activity,broadcastIntent将其发送给任何感兴趣的BroadcastReceiver组件,以及startService(Intent)或bindService(Intent,ServiceConnection,int)与后台服务进行通信。
Intent为在不同应用程序中的代码之间执行延迟的运行时绑定提供了一个工具。 其最重要的用途是开展活动,在活动中它可以被认为是活动之间的胶水。 它基本上是一个被动的数据结构,对被执行的动作进行抽象描述。 意图的主要信息是:
- action要执行的一般操作,如ACTION_VIEW,ACTION_EDIT,ACTION_MAIN等
- 数据用于操作的数据,如联系人数据库中的人员logging,表示为Uri。
学到更多
- Lars Vogel的教程
- ProgrammerGuru文章
- 共同的意图
意图是告诉Android你想做什么的一种方式。 换句话说,你描述你的意图。 Intents可以用来向Android系统发送某个事件已经发生的信号。 Android中的其他组件可以通过意向filter注册到此事件。
以下是两种意图
1.显性意图
用于调用特定组件。 当你知道你想要启动哪个组件时,你不想让用户自由控制使用哪个组件。 例如,您有一个有2个活动的应用程序。 活动A和活动B.您想要从活动A启动活动B.在这种情况下,您可以定义明确的目标活动B,然后使用它直接调用它。
2.Implicit Intents
当你知道你想要做什么的时候使用,但是你不知道哪个组件应该被启动。 或者,如果您想给用户一个select要使用的组件列表之间的选项。 如果这些Intents被发送到Android系统,它将search所有注册了特定操作和数据types的组件。 如果只find一个组件,Android将直接启动该组件。 例如,您有一个使用相机拍摄照片的应用程序。 你的应用程序的一个特点是,你可以给用户发送他拍摄的照片。 您不知道用户具有哪种可以发送照片的应用程序,并且您还想让用户select使用哪个外部应用程序(如果有多个应用程序)。 在这种情况下,你不会使用明确的意图。 相反,您应该使用隐式意图,将其操作设置为ACTION_SEND,并将其数据额外设置为照片的URI。
一个明确的意图总是传递给它的目标,不pipe它包含什么内容; 没有咨询filter。 但是,只有当组件的某个filter可以通过时,隐含的意图才会传递给组件
意图filter
如果一个intents被发送到Android系统,它将决定适合这个intents的应用程序。 如果已经为这种types的Intents注册了多个组件,则Android为用户提供了打开其中一个组件的select。
这个决定是基于IntentFilters的。 IntentFilters指定活动,服务或广播接收器可以响应的意图types。 意图filter声明组件的function。 它指定了活动或服务可以做什么以及接收器可以处理什么types的广播。 它允许相应的组件接收声明types的Intents。 IntentFilters通常是通过AndroidManifest.xml文件定义的。 对于BroadcastReceiver,也可以在编码中定义它们。 IntentFilters由其类别,操作和数据filter定义。 它也可以包含额外的元数据。
如果一个组件没有定义一个Intentfilter,它只能被明确的Intents调用。
以下是定义filter的两种方法
1.文件清单
如果您在清单中定义意图filter,则您的应用程序不必运行以对其filter中定义的意图做出反应。 Android在您的应用程序安装时注册filter。
2.广播接收机
如果你希望你的广播接收机只有在你的应用程序正在运行时才能接收到这个意图。 那么你应该在运行时(编程)定义你的意图filter。 请记住,这只适用于广播接收机。
在编写单个活动之后,需要转换到另一个活动来执行另一个任务,不pipe是否有来自第一个活动的信息。
Android平台允许通过意图接口进行转换。
单词来自这里: 使用意图演示 ,我build议你通过这个例子,因为他们也提供了一个代码文件。 所以你可以使用它,很容易理解相同。
Android应用程序可以包含零个或多个活动。 当您的应用程序有多个活动时,您可能需要从一个活动导航到另一个活动。 在Android中,您可以通过所谓的意图在各个活动之间进行导航。
意图是要执行的操作的抽象描述。 它可以与startActivity一起使用来启动一个Activity,broadcastIntent将其发送给任何感兴趣的BroadcastReceiver组件,并使用startService(Intent)或bindService(Intent,ServiceConnection,int)与后台服务进行通信。
有关更多详情,请参阅以下链接
1)。 http://developer.android.com/reference/android/content/Intent.html
2) http://developer.android.com/guide/topics/intents/intents-filters.html
3)。 http://www.vogella.de/articles/AndroidIntent/article.html
还有更多的文章可用。
根据他们的文件:
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意图让你从一个Android活动导航到另一个。 举例来说,本教程还介绍了各种types的Android意图。
Android Intent可以被定义为一个简单的消息对象,用于从一个活动传递给另一个。
意图定义应用程序的意图。 它们也用于在活动之间传输数据。
Android Intent可用于执行以下3个任务:
- 从当前活动中打开另一个活动或服务
- 在活动和服务之间传递数据
- 将责任委托给另一个应用程序。 例如,您可以使用Intents打开浏览器应用程序以显示URL。
意图可以大致分为2类。 没有关于这个类别的关键字,只是广泛的分类如何使用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
你可以把意图看作是“有意做某事”。 这是一种允许您在运行时将单独的对象(如活动)绑定在一起的消息。
如果一个活动想要开始第二个活动,则通过向Android发送意图来实现。 Android将启动第二个活动并将其传递给目标。
首先Android开发
意图是什么?
这是一种传递给组件的消息或信息。 它用来发起活动,显示网页,发送短信,发送电子邮件等。
在android中有两种types的意图:
隐含意图
显式意图
隐式意图用于调用系统组件
例
Intent i = newIntent(android.content.Intent.ACTION_VIEW,Uri.parse(“http://www.amazon.com”)); startActivity(i);
显式意图用于调用活动类。
例
Intent intent = newIntent(this,SecondActivity.class);
startActivity(intent);
你可以阅读更多
http://www.vogella.com/tutorials/AndroidIntent/article.html#intents_overview http://developer.android.com/reference/android/content/Intent.html
为了理解意图,我build议你通过网站: http : //developer.android.com/guide/topics/intents/intents-filters.html
另外,我在个人博客中讨论了关于意图的例子: http : //androiddesk.wordpress.com/2011/12/24/explicit-intent/
http://androiddesk.wordpress.com/2012/01/13/implicit-intent/
只要看看,如果你认为会有用的..
谢谢
意图是一个类,它是绑定的信息做一些行动。
例如:当用户执行这些动作时,将数据一个活动传递给另一个活动
目前的活动。
意图是执行操作的意图。
详细你可以参考
http://developer.android.com/reference/android/content/Intent.html
另外,在我的博客
http://emergingandroidtech.blogspot.in/2014/11/what-is-intent-in-android.html
看看它是否对你有帮助。
谢谢。
- 什么意图? 意图是允许应用程序组件从其他Android组件请求function的asynchronous消息。 意图允许您与自己和其他应用程序的组件进行交互。 例如,一个活动可以开始一个外部活动拍照。
Intents是android.content.Intenttypes的对象。 您的代码可以将它们发送到定义您的目标组件的Android系统。 例如,通过startActivity()方法,您可以定义意图应该用于启动一个活动。
意图可以通过Bundle包含数据。 这个数据可以被接收组件使用。
开始活动连接到
指定的类
不同types的意图enter code here
Android支持显式和隐式意图。
应用程序可以直接在intent(explicit intent)中定义目标组件,或者让Android系统根据intent数据(隐式intent)来评估注册的组件。
意图是允许应用程序组件从其他Android组件请求function的asynchronous消息。 Intents允许您与来自相同应用程序的组件以及其他应用程序提供的组件进行交互。 例如,一个活动可以开始一个外部活动拍照。
Intents是android.content.Intenttypes的对象。 您的代码可以将它们发送到定义您的目标组件的Android系统。 例如,通过startActivity()方法,您可以定义意图应该用于启动一个活动。
意图可以通过Bundle包含数据。 这个数据可以被接收组件使用。 要开始一个活动,请使用startActivity(intent)方法。 该方法在Activity扩展的Context对象上定义。
从广义上讲,我们可以将意图定义为
当一个活动想要开始另一个活动时,它会创build一个名为Intent的对象,该对象指定要启动哪个活动。
Android应用程序可以包含零个或多个活动。 当您的应用程序有多个活动时,您通常需要从一个导航到另一个。 在Android中,您可以通过所谓的意图在各个活动之间进行导航。 您可以使用putExtra()将一些数据传递给您想要通过intent启动的活动。
从“ Deep Dive into Android IPC/Binder Framework atAndroid Builders Summit 2013
链接
意图是在一些小而有效的路线中理解的
- Android通过意图支持简单forms的IPC(进程间通信)
- 意图消息传递是Android组件(活动,服务,内容提供者,广播接收者)之间asynchronous通信的框架,
- 这些组件可以运行在相同或不同的应用程序(即进程)
- 同时启用点对点以及发布订阅消息传递域
- 意图本身表示包含要执行的操作的描述的消息以及要传递给接收者的数据。
从这个线程一个简单的答案的build筑师黛安娜哈克博恩说它作为一个data container
,它实际上是。
从android架构的angular度来看 :
意图是用于进程间通信的数据容器。 它是从android架构的angular度build立在Binder
之上的。
意图用于从一个活动开始另一个活动。它基本上用于多个目的,例如从一个活动向另一活动发送数据以及用于触发目的。
他们基本上是两种types
-
隐含的意图。
-
明确的意图。
作为一名初学者,我深知这一点,我认为这将给出一些关于android意图的基本概念