Есть несколько способов, которыми вы можете в конечном итоге достичь этого, и все зависит от ваших реальных целей.
Если ваша цель - как можно быстрее попасть на страницу Xamarin.Forms, чтобы у вас был какой-то индикатор активности, который, по сути, говорит пользователю: «Это нормально, я незаморожены, мы просто делаем некоторые вещи, чтобы подготовиться к вам ", тогда вы можете попробовать создать страницу" SpashScreen ", где вы делаете дополнительную загрузку.Настройка может выглядеть примерно так:
public partial class AppDelegate : FormsApplicationDelegate
{
public override bool FinishedLaunching(UIApplication app, NSDictionary options)
{
global::Xamarin.Forms.Forms.Init();
LoadApplication(new App(new iOSInitializer()));
return base.FinishedLaunching(app, options);
}
}
}
public class iOSInitializer : IPlatformInitializer, IPlatformFinalizer
{
public void RegisterTypes(IContainerRegistry containerRegistry)
{
containerRegistry.RegisterInstance<IPlatformFinalizer>(this);
}
public void Finalize()
{
new Syncfusion.SfNumericUpDown.XForms.iOS.SfNumericUpDownRenderer();
Syncfusion.SfCarousel.XForms.iOS.SfCarouselRenderer.Init();
Syncfusion.XForms.iOS.Buttons.SfSegmentedControlRenderer.Init();
Syncfusion.XForms.iOS.Buttons.SfCheckBoxRenderer.Init();
}
}
public class App : PrismApplication
{
protected override async void OnInitialized()
{
await NavigationService.NavigateAsync("SplashScreen");
}
}
public class SplashScreenViewModel : INavigationAware
{
private IPlatformFinalizer _platformFinalizer { get; }
private INavigationService _navigationService { get; }
public SplashScreenViewModel(INavigationService navigationService, IPlatformFinalizer platformFinalizer)
{
_navigationService = navigationService;
_platformFinalizer = platformFinalizer;
}
public async void OnNavigatedTo(INavigationParameters navigationParameters)
{
_platformFinalizer.Finalize();
await _navigationService.NavigateAsync("/MainPage");
}
}
Если вы работаете с модулями, вы можете использовать аналогичный подход, хотя любые модули, которые будут инициализироваться при запуске, будут по-прежнему выполнять этот вызов для инициализаторов перед их отображением.Вы установили страницу для навигации.Тем не менее, работа с модулями дает вам ряд преимуществ, так как вам только когда-либо придется инициализировать то, что на самом деле требуется приложению на тот момент.
Все это говорит о том, что я был бы удивлен, если вы увидитеЭто очень выгодно, поскольку эти Init
вызовы, как правило, являются пустыми методами, предназначенными только для того, чтобы компоновщик не мог их связать ... если у вас нет ссылок или у вас есть файл компоновщика, вы можете просто дать указание компоновщику покинуть Syncfusion.и другие библиотеки в одиночку.