Xamarin - 一次插入多个SQLite表?



我有一个 Xamarin 应用程序,其中包含从 API 中提取的多个数据表。目前,调用 API 并插入数据的代码如下所示:

try
{
// Table1
var table1Response = await httpClient.Value.GetStringAsync("http://website.com/api/table1");
var table1 = JsonConvert.DeserializeObject<List<Table1>>(table1Response);
using (SQLiteConnection conn = new SQLiteConnection(App.DatabaseLocation))
{
conn.CreateTable<Table1>();
conn.DeleteAll<Table1>();
conn.InsertAll(table1);
conn.Close();
}
// Table2
var table2Response = await httpClient.Value.GetStringAsync("http://website.com/api/table2");
var table2 = JsonConvert.DeserializeObject<List<Table2>>(table2Response);
using (SQLiteConnection conn = new SQLiteConnection(App.DatabaseLocation))
{
// Checks for table and creates if doesn't exist
conn.CreateTable<Table2>();
// Deletes all old data
conn.DeleteAll<Table2>();
// Updates with new reference data from API
conn.InsertAll(table2);
conn.Close();
}
// Repeats for all tables in the app.

因为它必须等待 API 调用,所以当在应用的 OnStart(( 中调用此方法时,数据会逐个表加载,并且如果导航到应用中需要尚未完成调用的某些数据的页面,显然应用会崩溃。我昨天向我正在编写的一个函数寻求帮助,该函数使用 foreach 循环以编程方式插入数据(请参阅:Xamarin/C# - 以编程方式将数据插入多个表的 SQLite 数据库?(,我被告知这不是一种聪明的方法,根据需要定义每个表是一种更好的方法。

我现在的问题是,我可以对我的 API 调用方法执行哪些操作,让它一次进行多个 API 调用并假设一次性加载所有数据?这甚至有可能做到,或者我应该尝试构建一个加载屏幕,等到所有数据都被检索到后才允许进一步使用该应用程序?

您可以尝试以 xamarin 形式使用backgrounding Service

后台服务非常常用于以下任务: 在后台执行,例如下载文件,长时间 计算、播放音乐和定期方法调用。每个平台 启用和注册后台有不同的方式 服务。

因为每个平台都有自己的后台服务方式和规则。我们必须为每个平台提供服务。

有关更多详细信息,您可以查看:

https://www.youtube.com/watch?v=Z1YzyreS4-o

https://robgibbens.com/backgrounding-with-xamarin-forms/

https://winstongubantes.blogspot.com/2018/09/backgrounding-with-xamarinforms-easy-way.html

此外,如果您想深入了解每个平台的高级后台服务,您可以查看以下链接:

安卓后台服务链接

iOS 后台服务链接

相关内容

  • 没有找到相关文章

最新更新