如果一个类派生自Activity,为什么它还会运行一个Activity装饰?

时间:2014-03-20 21:06:14

标签: android android-activity xamarin.android custom-attributes

这似乎是Android标准:

[Activity(Label = "JiveTomTurkey", MainLauncher = true, Icon = "@drawable/icon")]
public class HyperActivity : Activity

......但它似乎是多余的 - 如果HyperActivity继承自Activity,为什么它还必须告诉编译器该类是一个Activity?

1 个答案:

答案 0 :(得分:1)

我发现了这个:

我们之前提到过,必须在AndroidManifest.xml文件中注册活动,以便操作系统找到它们,而ActivityAttribute可以帮助它们做到这一点。在编译期间,Xamarin.Android构建过程从项目中的所有类文件中收集所有属性数据,然后创建一个新的AndroidManifest.xml,该文件基于项目中的AndroidManifest.xml文件,但属性数据合并在然后它将清单捆绑到生成的编译应用程序(apk文件)中。

通过使用C#属性,Xamarin.Android能够保存用于将Activity注册到类定义的声明性信息。如果未包含此属性,将导致Android无法找到活动,因为它不会在系统中注册。

here