【问题标题】:Xamarin Forms app getting stuck on SplashScreenXamarin Forms 应用程序卡在 SplashScreen
【发布时间】:2019-07-09 07:47:03
【问题描述】:

我有一个 SplashScreen 类,我在其中显示图像缩放,并在完成缩放后转到登录页面。我在多台设备上尝试过,但仅在一台设备上它不会从 SplashScreen 改变。

我一直在研究如何处理异步方法和等待指令,但到目前为止似乎没有任何效果。我还尝试删除 ScaleTo 并仅显示图像,但它不起作用。

这就是我所拥有的:

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

【问题讨论】:

  • 如果我只在一台 Android 设备上遇到问题,我会对结果感到满意,除非它是一些真正的主要型号。询问如何解决这个问题仍然是合法的,但这需要在特定设备上进行测试并访问整个代码。所以我建议关闭这个问题,但如果您提供一些重现问题所需的代码和设备信息,也许有人可以测试和回答......
  • 如果您正在测试 iOS 应用程序,我建议您在 XCode 控制台中观看 iOS 消息。通过扩展坞电缆将 iPad 连接到 Mac 后,您可以启动 XCode 并转到 Window -> Devices and Simulators。弹出的窗口允许您打开设备日志并启动控制台应用程序。控制台应用程序实时显示从设备流式传输的调试信息。
  • @IvanIčin 这只发生在 S10 上,由于我雇主的隐私政策,我无法真正提供对代码的访问权限。我知道在没有任何背景的情况下提出这样的问题是一个很长的问题。
  • @testingandtesting,我找到了这篇关于使用slpashscreen的文章,我试试这个示例,我没有问题,你可以看看:xamaringuyhome.blogspot.com/2017/10/…
  • @CherryBu 这与我的 SplashScreen 代码完全相同,但它不会转到 Application.Current.MainPage = new NavigationPage(new Page1());。它在我测试过的所有设备上都可以正常工作,只是 S10 的问题

标签: c# xamarin.forms visual-studio-2019


【解决方案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();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-04
    • 1970-01-01
    相关资源
    最近更新 更多