xamarin - 使用 Children.Add 时的 Xamarin TabbedPage 性能
问题描述
下午好,我有一个关于标签页性能的问题,以及是否有更有效的方法将标签加载到页面中,而不会丢失任何帧或进程挂起。关于这个问题,我在 Xamarin.Forms 中遇到了一些关于 TabbedPage 的问题。我的项目目前由一个包含 104 个组件的 Listview 组成。当我单击其中一个项目时,它会打开一个由 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";
}
}
注意:(本项目完全是离线项目,无需网络)
如果有人可以向我解释一种更好的方法来加载数据,同时保持应用程序流畅和流畅,那将不胜感激。数据不必一次全部加载,只要页面一点击就打开!
解决方案
推荐阅读
- firebase - 使用云函数外壳在本地运行云函数代码
- google-apps-script - Google App Script 将文档中的文本设为只读?
- javascript - 正则表达式允许 9 个数字,但阻止超过 4 个重复数字
- c# - 按默认列对 ListView 进行排序
- jestjs - 不变违规:元素类型无效(Jest + TSX + StyledComponents)
- c# - 如何修复 System.Runtime.InteropServices.COMException 错误
- java - OWALAPI - 从 OWLEEquivalentClassesAxiom 语法传递到曼彻斯特 OWL 语法(如 Protege)
- reactjs - YUP 验证:将字段“a”和“b”的数学值与字段“c”进行比较
- rethinkdb - 在多个字段上重新思考 eqJoin
- c++ - Vulkan - 我应该什么时候创建一个新的管道?