使用Xamarin的Android应用程序,但我认为这适用于非Xamarin。我在做研究时读过这篇文章。
在Android应用程序中,您会注意到AndroidManifest.xml文件包含一个条目,用于配置应用程序的各种属性:图标,标签,主题等。根据您的应用程序的需要,这就足够了。实例化时,应用程序将根据清单中配置的值执行必要的初始化,然后将加载定义为要在启动时加载的视图的Activity。
在某些情况下,您可能希望扩展Application类,以便在应用程序启动时执行自定义初始化,或者维护全局应用程序状态(例如,在跨多个级别跟踪得分的游戏中)。上面显示的示例是有人决定子类化Application类并覆盖它的OnCreate方法的情况,尽管他们没有在override方法中包含任何自定义代码。看起来他们的目的是创建一个全局静态属性,以便始终可以访问当前加载的Activity。
以前,我不需要扩展应用程序类,所以我只是像我的文章所说的那样使用了我的清单处理。但是,我最近需要扩展应用程序类,以便我可以将OnCreate事件用于应用程序。
我添加了一个扩展Application的新类,它看起来像这样:
namespace MyApp.Droid
{
public class MyApp : Application
{
public MyApp(IntPtr handle, global::Android.Runtime.JniHandleOwnership transfer)
:base(handle, transfer)
{
}
public override void OnCreate()
{
base.OnCreate();
//Do OnCreate things here.
}
}
}
似乎只是添加这个类并不完整。第一个问题,我现在还必须修改我的清单吗?第二个问题,该类可以具有主题,图标等属性......这些属性已经在我的清单中定义。他们可以留在清单中还是我需要将它们作为属性移动到这个新类?
这是清单:
<application android:allowBackup="true" android:icon="@drawable/mainapplogo" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme">
谢谢!
第一个问题,我现在还必须修改我的清单吗?
在这个问题中,如果你的意思是因为你已经添加了新的应用程序类,那么就需要在现有的清单中进行任何更改,那么就没有这样的要求。
第二个问题,该类可以具有主题,图标等的属性......这些属性已经在我的清单中定义。他们可以留在清单中还是我需要将它们作为属性移动到这个新类?
Android Manifest的主题和其他一切将保留在那里,Android Application类和AndroidManifest.xml独立工作,因此添加扩展的应用程序类不需要对Manifest文件进行任何更改,反之亦然。
祝好运,
如有疑问,请随时恢复
UPDATE
请确保您的应用程序类在类名之上具有[Application]
属性
#if DEBUG
[Application(Debuggable=true)]
#else
[Application(Debuggable = false)]
#endif
public class MyApp: Application
{