android - Xamarin Android 中的启动画面太慢

标签 android xamarin xamarin.android

我正在创建一个显示初始屏幕然后创建主要 Activity 的应用程序。我正在学习这个看起来非常简单的教程:https://developer.xamarin.com/guides/android/user_interface/creating_a_splash_screen/

实现后,我可以成功看到启动画面,但有时(20 次中有 1 次)使用 S5 我会看到以下屏幕:

Wrong screen

后面是(右)启动画面(取自模拟器,但只是为了说明我的观点):

enter image description here

所以我的猜测是,有时 Xamarin 需要很长时间才能加载应用程序,因此它会延迟显示启动画面。有什么办法可以避免吗?

更新 1 我已经按照教程进行操作,但我已经为此删除了 sleep :

Insights.Initialize ("<APP_KEY>", Application.Context);
StartActivity(typeof (MainActivity));

最佳答案

该示例在 UI 线程上调用 Thread.Sleep(10000);...这将锁定应用程序并生成 ANR !

通过后台 sleep 然后触发下一个 Activity 来修复它:

namespace SplashScreen
{
    using System.Threading;

    using Android.App;
    using Android.OS;

    [Activity(Theme = "@style/Theme.Splash", MainLauncher = true, NoHistory = true)]
    public class SplashActivity : Activity
    {
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);

            Task.Run (() => {
                Thread.Sleep (10000); // Simulate a long loading process on app startup.
                RunOnUiThread (() => { 
                    StartActivity (typeof(Activity1));
                });
            });
        }
    }
}

关于android - Xamarin Android 中的启动画面太慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33789862/

相关文章:

安卓布局设计

android - LifecycleObserver 不工作

Xamarin - 使用可移植类库是强制性的方法吗?

c# - Xamarin 安卓项目

android - Flutter:添加到 Hive 框中的对象的字段在应用重启后返回 null

android - 如何在android xamarin中调整图像按钮的大小?

android - Xamarin:无法打开虚拟机 Nexus 7 (Lollipop) 的 session

c# - 如何在 Xamarin Android 中验证应用内购买?

c# - 如何使用 xamarin 将私有(private)字符放入字符串中

c# - 如何解决 Xamarin.Android Java 互操作的缓慢问题