【发布时间】:2020-12-21 06:17:15
【问题描述】:
我有一个搜索页面,有一个按钮可以导航到另一个页面。当我单击该按钮时,导航大约需要 4 秒。
搜索页面命令:
Device.BeginInvokeOnMainThread(async () =>
{
await (Application.Current.MainPage as NavigationPage).PushAsync(new OtherPage());
});
后面的其他页面代码:
[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class OtherPage : ContentPage
{
SearchStateViewModel Model;
public SearchEstatePage()
{
InitializeComponent();
Model = new SearchStateViewModel();
Layout.BindingContext = Model;
}
protected override void OnAppearing()
{
base.OnAppearing();
Model.GetCities();
}
}
有什么问题?
【问题讨论】:
-
那么你有没有把
GetCities注释掉并测试过你为什么要使用BeginInvokeOnMainThread? -
@MichaelRandall 我第一次注释掉
GetCities并删除BeginInvokeOnMainThread需要 3 秒钟,当我按下返回按钮并再次按下导航按钮时,它导航速度很快。只有第一次很慢 -
我的直觉说可能还有更多的事情发生在 SearchStateViewModel 的构造函数中是否有任何慢代码?
-
@MichaelRandall 我已经注释掉了 SearchStateViewModel 构造函数中的所有代码,但第一次导航仍然需要大约 3 秒。有什么方法可以导航到其他页面并在完全显示运行一些代码之后?
-
@MichaelRandall 让我们在聊天中继续讨论。
标签: c# xamarin.forms