Приложение Xamarin Forms зависает на SplashScreen

У меня есть класс SplashScreen, где я показываю масштабирование изображения, и после завершения масштабирования он переходит на страницу входа. Я пробовал это на нескольких устройствах, и только на одном устройстве он не меняется с SplashScreen.

Я изучал, как обрабатывать асинхронные методы и ждать инструкций, но пока ничего не работает. Также я попытался удалить ScaleTo и просто показать изображение, но это не работает.

Вот что у меня есть:

protected override async void OnAppearing()
{
     base.OnAppearing();
     await splashLogo.ScaleTo(1.5, 3000);
     ShowLogin();
}

Если бы у меня была проблема только на одном устройстве Android, я был бы доволен результатом, если только это не какая-то действительно крупная модель. По-прежнему можно спросить, как это исправить, но для этого требуется тестирование на конкретном устройстве и доступ ко всему вашему коду. Поэтому я рекомендую этот вопрос закрыть, хотя, если вы предоставите код, необходимый для воспроизведения проблемы, и информацию об устройстве, возможно, кто-то сможет проверить и ответить...

Ivan Ičin 02.07.2019 23:42

Если вы тестируете приложение для iOS, я бы рекомендовал просмотреть сообщение iOS в консоли XCode. После подключения iPad к Mac с помощью док-кабеля вы можете запустить XCode и перейти в «Окно» -> «Устройства и симуляторы». Всплывающее окно позволяет открыть журналы устройства и запустить консольное приложение. Консольное приложение показывает отладочную информацию, которая передается с устройства в режиме реального времени.

Mouse On Mars 03.07.2019 00:09

@IvanIčin Это происходит только с S10, и я не могу предоставить доступ к коду из-за политики конфиденциальности моего работодателя. Я знал, что спрашивать что-то подобное без контекста было бы слишком далеко.

testingandtesting 03.07.2019 00:12

@testingandtesting, я нашел эту статью об использовании slpashscreen, я попробовал этот образец, и у меня нет проблем, вы можете посмотреть: xamaringuyhome.blogspot.com/2017/10/…

Cherry Bu - MSFT 03.07.2019 05:01

@CherryBu Это точно такой же код, который у меня есть для SplashScreen, но он не переходит в Application.Current.MainPage = new NavigationPage(new Page1());. Он отлично работает на всех устройствах, которые я тестировал, проблема только с S10.

testingandtesting 03.07.2019 18:27

@testingandtesting, возможно, подключит устройство и просмотрит журнал устройства при запуске приложения, там может быть подсказка. xamarininsider.com/2017/07/18/…

Nigel Ferrissey 05.07.2019 01:36

@NigelFerrissey Я пробовал это, но я не совсем уверен, как интерпретировать информацию, которую он мне дает. Я не смог найти ничего с ключевым словом Error или Exception.

testingandtesting 07.07.2019 22:43
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
7
1 048
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я решил эту проблему, добавив этот класс:

class MainPageViewModel : BaseViewModel
{
    private bool isLoadingData;

    public bool IsLoadingData
    {
        get => isLoadingData;
        set => SetProperty(ref isLoadingData, value);
    }

    public async Task LoadData()
    {
        IsLoadingData = true;
        await Task.Delay(2000);
        IsLoadingData = false;
    }
}

Затем на моей странице SplashScreen:

public SplashScreen()
{
    //Everything else I need in this page
    BindingContext = new MainPageViewModel();
}

private MainPageViewModel ViewModel => BindingContext as MainPageViewModel;

protected override async void OnAppearing()
{
    base.OnAppearing();
    await ViewModel.LoadData();
    ShowLogin();
}

Другие вопросы по теме