Добрый день,
У меня есть вопрос, касающийся производительности страницы с вкладками и существует ли более эффективный способ загрузки вкладок на страницу, без потери кадров или процесса.
Что касается этой проблемы, у меня было несколько проблем с TabbedPage в Xamarin.Forms. Мой проект в настоящее время состоит из Listview с 104 компонентами. Когда я нажимаю на один из элементов, он открывает страницу с вкладками, состоящую из 3 страниц с вкладками. Я запускаю страницу с вкладками, используя следующий код
int Clicked = 0;
public async Task CheckClick(Page data)
{
Clicked += 1;
if (Clicked == 1)
{
await Navigation.PushAsync(data);
List_View.SelectedItem = null;
}
}
public async void OnSelection(object sender, SelectedItemChangedEventArgs e)
{
if (e.SelectedItem == null)
{
return;
}
var Cell = e.SelectedItem as DataSource;
switch (Cell.ID)
{
case 0:
await CheckClick(new Function_One());
break;
}
}
Реальная проблема возникает после того, буду ли я предварительно загружать информацию заранее или делаю что-нибудь, когда бы я ни звонил Children.Add (data); все приложение зависает на 1 или 2 секунды, после чего страница загружается. Код выглядит следующим образом.
public class Function_One : TabbedPage
{
private async Task Test()
{
//
var data = new NewPageData("", "", "OP.png", "Persian.png", Description, Usage, Storage, Data);
var data2 = new NewMedicalPage(Medical_Info, Translation, startinfo);
var data3 = new NewNotePage("", 0);
data.Icon = "Info.png";
await Task.Delay(100);// Little await to load the page first before hang
Device.BeginInvokeOnMainThread(async () =
{
Children.Add(data);// HERE is the freeze
Children.Add(data2);// these
Children.Add(data3);// 3 (Adding of the Tabs)
});
}
public void UpdateData()
{
Task.Run(async () =
{
try
{
Description.Spans.Add(new Span
{
Text = "Data.... ",
FontSize = 18,
FontFamily = variables.fontFamily
});
Usage.Spans.Add(new Span
{
Text = "MoreData...",
FontSize = 18,
FontFamily = variables.fontFamily
});
Storage.Spans.Add(new Span
{
Text = "LastData...",
FontSize = 18,
FontFamily = variables.fontFamily
});
await Test();
}
catch { }
}).ConfigureAwait(false);
}
public Function_One()
{
UpdateData();
BarBackgroundColor = MainColor;
BarTextColor = Color.WhiteSmoke;
Title = "Page";
}
}
ПРИМЕЧАНИЕ: (Этот проект полностью автономный, Интернет не требуется)
Если бы кто-нибудь мог объяснить мне лучший способ загрузки данных при сохранении плавности и плавности работы приложения, это было бы полезно. Данные не должны загружаться все сразу, так как страница открывается, как только она нажата!