gpt4 book ai didi

xamarin - 对于 Xamarin Forms 应用程序,我应该如何决定 App 构造函数或 OnStart() 中的内容?

转载 作者:行者123 更新时间:2023-12-02 08:03:05 26 4
gpt4 key购买 nike

这是我的代码:

    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()
{


}

谁能给我解释一下。我将代码放在构造函数中或 OnStart() 方法中是否有任何区别?这样做的正常方法是什么?

最佳答案

我已经使用 Xamarin.Forms 很长时间了,这就是我和我的开发人员使用 OnStart 方法的方式!

如果您查看 Microsoft记录它的内容如下:

OnStart - Called when the application starts.

所以,首先,你应该知道 OnStart 方法并没有具体的用途,说实话,使用构造函数和这个生命周期方法没有太大区别,因为两者在 XF 框架启动时被调用,首先是构造函数,然后是 OnStart 方法。

现在让我们来看看差异,

现在,作为 Jason指出,OnStart 方法是生命周期方法,因此具有与构造函数不同的返回类型,因此您甚至可以在 OnStart 方法中调用异步代码,但是您不能在构造函数中做同样的事情,因为构造函数不能是异步的。

这意味着如果您有以下方法:

public async Task<bool> IsSomeThingWorkingAsync(//SomeParams)
{
// Code
}

现在,不能从构造函数异步调用此方法,因为构造函数是强制同步的并且没有返回类型。但是,如果您尝试从 on start 方法执行此操作,它会很容易并且会起作用,在这种情况下,您使用 OnStart 方法。如下所示:

 protected override async void OnStart()
{
bool WasWorkSuccess=await IsSomeThingWorkingAsync();
//do something with the boolean
}

构造函数旨在用于接线。在构造函数中,您希望避免做实际工作。你基本上准备了要使用的类。方法旨在完成实际工作。

注意: 选择一个而不是另一个没有任何性能提升,这实际上是一个偏好和标准问题。

关于xamarin - 对于 Xamarin Forms 应用程序,我应该如何决定 App 构造函数或 OnStart() 中的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54631308/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com