Нет кода или достаточно деталей, поэтому я предполагаю, что это то, что вы хотите сделать. Вызовите API-интерфейсы асинхронно, пока не покажите экран spla sh.
Перед назначением MainPage
в вашем App.xaml.cs вы должны вызывать эти API-интерфейсы асинхронно с await, а затем использовать их для привязки вашего главная страница
public App()
{
InitializeComponent();
//do all my prefetch stuff for app initialization.
// API and what not
var viewmodel = new AppMainViewModel();
await viewmodel.CallFooFetchAsync();
await viewmodel.BlahBlahAsync();
MainPage = new NavigationPage(new AppMainPage(viewmodel));
}
На странице
public AppMainPage(AppMainViewModel vm)
{
BindingContext =vm;
}
Таким образом, к моменту загрузки страницы все данные уже под рукой.
Вы можете изучить добавление этого кода в OnAppearing
страницы.
Обратите внимание, что концепция экрана Spla sh по умолчанию заключается в том, чтобы просто показать изображение (с другой темой в Android) и установить изображение в iOS. Вы должны иметь обычный пользовательский интерфейс, технически это не экран spla sh.
В качестве альтернативы вы можете получить общий дескриптор проекта в родном
Android Sp
protected override void OnCreate(Bundle bundle)
{
...
var app = new App(); //this will be shared project App object
Device.BeginInvokeOnMainThread(async () => await app.DoPrefetchStuffFirst()); //API calls if needed in this async method
//then
LoadApplicationm(app)
}
Вы можете сделать то же самое в iOS AppDelegate
И если вы вызываете нативные методы спецификаций c на платформах (может быть для вызовов API), тогда вы используете функцию DependencyService
, которая передаст ее в общий доступ. проект или пользовательский рендерер в зависимости от того, где вы хотите его использовать.