gpt4 book ai didi

xamarin.forms - 在 xamarin 表单中异步加载数据的正确方法

转载 作者:行者123 更新时间:2023-12-03 13:54:34 25 4
gpt4 key购买 nike

什么是异步加载数据以尽可能快地向用户显示 UI 的正确方法。 例如

我有一个 xamarin forms projekt,其中包含一个 map 组件。
我想在获取用户当前位置(来自 gps)和从服务器获取的一些位置/引脚之前显示 map 。我见过这两种方法

1) 从构造函数调用异步方法

   Map mMyMap;
ctor()
{
InitializeCompeont();
InitAsync();
}
private async void InitAsync()
{
var pins = await GetPinsFromServer();
mMyMap.Pins.Add(pins)
}

2) 在出现时
 ctor()
{
InitalizeComponent()
}
protected override async void OnAppearing()
{
var pins = await GetPinsFromServer();
mMyMap.Pins.Add(pins)
}

这两种方法似乎都“有效”,但我自欺欺人地从构造函数调用异步方法?

我还设法以两种方式设置 BindingContext 异步并正确绑定(bind)

有什么区别吗?

最佳答案

时间和调用加载数据的时间有所不同。如果在页面 ctor 中完成首次创建该页面时,它将被调用一次且仅一次。

如果在 OnAppearing 中完成该调用将在页面显示之前发生,并且可以多次调用。例如,如果您在其顶部推送另一个页面,然后将其弹出 OnAppearing将再次调用重新加载您的数据,如果该其他页面修改了前一页上显示的数据,这可能是可以的。否则,您可能会进行不必要的加载数据调用。

值得注意的是OnAppearingOnDisappearing在不同平台上并不总是一致地同时调用。例如,如果您在 Android 或 iOS 上使用内置共享,一个可能会触发这两个事件,但另一个可能根本不会触发任何事件。

另外,我会确保你正在使用 Task.Run();在后台线程上运行任何长时间运行的任务,以确保您没有锁定主线程,并可能设置一个 bool 来显示/隐藏微调器(如果需要了解您的后台任务何时开始和结束)。

关于xamarin.forms - 在 xamarin 表单中异步加载数据的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52476029/

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