明确的意图和行动

时间:2018-05-02 23:24:36

标签: android android-intent

我想知道以下代码是如何工作的(它启动了一个活动)。我不知道系统如何确定应该执行的操作是什么。没有为Intent指定任何操作。我本以期待一个set_action。

Intent i = new Intent(this, ActivityTwo.class);
startActivity(i);

我想知道考虑到我在文档中读到的内容,怎么可能有一个Intent哪个动作没有明确指定:

  

意图中的主要信息是:

     
      
  • action - 要执行的一般操作,例如ACTION_VIEW,ACTION_EDIT,ACTION_MAIN等。

  •   
  • 数据 - 要操作的数据,例如联系人数据库中的人员记录,表示为Uri。

  •   

我希望它有意义。谢谢你的帮助。

2 个答案:

答案 0 :(得分:1)

Android中有两种类型的意图,隐式意图和显式意图。

1)隐含意图

您可以设置操作,类别和数据类型,让Android查找符合指定特征的活动(具有指定操作,类别和数据类型的意图过滤器)。

2)明确意图

正如observed array mutation methods所说:

  

显式意图是您用于启动特定应用的意图   组件,例如您应用中的特定活动或服务。至   创建显式意图,定义Intent的组件名称   object-所有其他intent属性都是可选的。

您可以告诉明确打开哪个活动/服务。因此,系统无需确定要打开哪一个,您已经告诉它打开特定的活动/服务。

你在文档中读到的那个是一个隐含的意图,这是明确的意图:

Intent i = new Intent(this, ActivityTwo.class);

答案 1 :(得分:0)

Intent类有多个构造函数。 如果检查公共Intent(Context packageContext,Class cls)的源代码,则会提到以下信息:

  

为特定组件创建意图。所有其他领域(行动,数据,        * type,class)为null,尽管稍后可以使用explicit进行修改        *电话。这提供了一种创建意图的便捷方式        *旨在执行硬编码的类名,而不是依赖于        *系统为您找到合适的课程;