Ala*_*an2 3 xamarin xamarin.forms
这是我拥有的代码:
public App()
{
InitializeComponent();
DB.CreateTables();
DB.GetSettings();
DB.PopulateTables();
SetResourceColors();
SetResourceDimensions();
MainPage = new MainPage();
activity = Helpers.Activity.Create();
VersionTracking.Track();
DeviceDisplay.MainDisplayInfoChanged += OnMainDisplayInfoChanged;
}
protected override void OnStart()
{
}
Run Code Online (Sandbox Code Playgroud)
谁能给我解释一下。我在构造函数或 OnStart() 方法中放置代码有什么区别吗?这样做的正常方法是什么?
我已经Xamarin.Forms
和我一起工作了很长时间,这就是我和我的开发人员如何使用 OnStart 方法!
如果您查看Microsoft文档,它会说明以下内容:
OnStart - 在应用程序启动时调用。
因此,首先,您应该知道该方法没有特定用途,OnStart
老实说,使用构造函数或此生命周期方法之间没有太大区别,因为两者都是在 XF 框架启动时调用的,首先是构造函数,然后是的OnStart
方法。
现在让我们来谈谈差异,
现在,正如Jason指出的那样,该OnStart
方法是一个生命周期方法,因此具有与构造函数不同的返回类型,因此您甚至可以在该OnStart
方法中调用一段异步代码,但您不能在构造函数中执行相同的操作,因为构造函数不能是异步的.
这意味着如果您有以下方法:
public async Task<bool> IsSomeThingWorkingAsync(//SomeParams)
{
// Code
}
Run Code Online (Sandbox Code Playgroud)
现在,无法从构造函数异步调用此方法,因为构造函数是强制同步的并且没有返回类型。但是,如果您尝试从 on start 方法执行此操作,它会很容易并且会起作用,在这种情况下,您使用 OnStart 方法。像下面这样:
protected override async void OnStart()
{
bool WasWorkSuccess=await IsSomeThingWorkingAsync();
//do something with the boolean
}
Run Code Online (Sandbox Code Playgroud)
构造函数旨在用于接线。在构造函数中,您希望避免进行实际工作。您基本上准备了要使用的类。方法旨在完成实际工作。
注意: 选择一个而不是另一个没有任何性能提升,这实际上是一个偏好和标准的问题。
归档时间: |
|
查看次数: |
326 次 |
最近记录: |