需要帮助才能找出Android意图构造函数

时间:2015-09-04 16:38:22

标签: android

我正在尝试学习如何开发Android应用程序。我正在阅读Android开发者指南网站http://developer.android.com/guide/components/intents-filters.html,特别是有关显式与隐式意图的内容。显式意图的一个示例如下所示:

// Executed in an Activity, so 'this' is the Context
// The fileUrl is a string URL, such as "http://www.example.com/image.png"
Intent downloadIntent = new Intent(this, DownloadService.class);
downloadIntent.setData(Uri.parse(fileUrl));
startService(downloadIntent);

构造函数Intent(this, DownloadService.class)看起来像Android API中的这个公共构造函数(http://developer.android.com/reference/android/content/Intent.html):

public  Intent (Context packageContext, Class<?> cls) 

Intent构造函数文档声明:

为特定组件创建意图。所有其他字段(操作,数据,类型,类)都为空,但稍后可以使用显式调用对其进行修改。这提供了一种方便的方法来创建旨在执行硬编码类名的intent,而不是依赖系统为您找到合适的类;有关此影响的更多信息,请参阅setComponent(ComponentName)。

我想弄清楚的是,构造函数中的“this”是什么?我的意思是,我知道“这个”一般是什么(当前的活动实例),但这个具体内容是什么?在评论中,它说“在一个活动中执行,所以'这个'是上下文”,但是什么是“上下文”?它不是构成意图的五条信息之一(组件名称,操作,数据,类别,附加组件,标志)。我知道“Do​​wnloadService.class”参数是组件名称,所以我只想弄清楚它是什么。

1 个答案:

答案 0 :(得分:1)

  

我想弄清楚的是,构造函数中的“this”是什么?

它是Context的某个子类的实例,例如Activity

  

它不是组成意图的五条信息之一(组件名称,操作,数据,类别,附加组件,标志)。

不,但Context和Java类的组合足以构建ComponentNameComponentName是应用程序ID和该应用程序中组件的完全限定类名的组合。 Java类可以提供完全限定的类名; ContextComponentName提取应用程序ID的位置(在本例中为您自己的应用程序)。

相关问题