我創建了一個 Xamarin Forms 5.0 應用程式 (VS 2022)。我的專案由 Android 和 iOS 的主要應用程式和埠組成。我想添加一個執行以下操作的啟影片面:
- 顯示徽標
- 在后臺,創建表(如果它們不存在)
- 從外部 API 中提取資料并加載表。
- 完成第 2 步和第 3 步后,關閉啟影片面并打開主應用程式(即在第 2 步和第 3 步完成之前不要讓用戶使用該應用程式。)
我撰寫了執行第 2 步和第 3 步的代碼,但它在顯示的第一個視圖中運行。我寧愿在啟影片面中運行此代碼。有沒有辦法在主應用程式中構建啟影片面,而不必將其添加到每個設備特定的應用程式(即 Android 和 iOS 應用程式)?
現在,我在 App.xaml.cs OnStart 方法中運行此代碼。但是,這會導致螢屏保持空白,直到代碼完成運行,然后螢屏才會顯示。這是我如何設定它:
應用程式.xaml.cs
public partial class App : Application
{
static Database database;
public IMyDataStore<MyViewPagesModel> _MyDataStore=> DependencyService.Get<IMyDataStore<MyViewPagesModel>>();
public static Database Database
{
get
{
if (database == null)
{
database = new Database(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "my_db.db3"));
}
return database;
}
}
public App()
{
InitializeComponent();
DependencyService.Register<MyDataStore>();
MainPage = new AppShell();
}
protected override void OnStart()
{
if(Database != null)
{
Database.CreateTables();
Task.Run(async () => await MyDataStore.PullDataFromAPI()).Wait();
}
}
}
MyDataStore.cs
public class MyDataStore: IMyDataStore<MyViewPagesModel>
{
static HttpClient client = new HttpClient();
readonly MyViewPagesModel _pages;
Database db;
private HttpClient httpClient;
public MyDataStore()
{
_pages = new MyViewPagesModel_pages();
db = App.Database;
httpClient = new HttpClient();
}
public async Task PullDataFromAPI(){
//do stuff
}
}
我試圖在啟動時運行
Database.CreateTables();
Task.Run(async () => await MyDataStore.PullDataFromAPI()).Wait();
但是,我不希望螢屏凍結。我希望它顯示徽標并滾動一些加載文本,但不確定如何?這可以在啟影片面中完成還是我需要在不同的執行緒上運行這兩種方法?
謝謝
uj5u.com熱心網友回復:
Xamarin.Forms 在本機啟動序列完成后在每個平臺上初始化。Xamarin.Forms 被初始化:
在 Android 上 MainActivity 類的 OnCreate 方法中。
在 iOS 上 AppDelegate 類的 FinishedLaunching 方法中。
在 UWP 上 App 類的 OnLaunched 方法中。
因此,在上述方法中添加您的邏輯代碼。僅供參考,啟動應用程式啟動時應盡快顯示啟影片面,但 Xamarin.Forms 直到啟動序列的后期才初始化,這意味著啟影片面必須在外部實作因此,將您的邏輯代碼添加到上面的方法。
有關Xamarin.Android 上的啟影片面的詳細資訊,請參閱Xamarin.Android 啟影片面。
有關Xamarin.iOS 上的啟動螢屏的詳細資訊,請參閱Xamarin.iOS 啟動螢屏。
uj5u.com熱心網友回復:
當前,無法在默認 Xamarin Forms 初始螢屏期間運行后臺行程。
相當,
- 創建
Content page并添加logo/animation。 - 在后臺創建表,呼叫API,加載表。
- 完成所有操作后,導航到應用程式的主頁并將其設定為
Main page.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/371237.html
