Xamarin формирует 10 секунд черного экрана после заставки

#c# #xamarin.forms #splash-screen

#c# #xamarin.forms #заставка

Вопрос:

Сначала я должен сказать, что я прочитал все подобные вопросы, и они не могут решить мою проблему .

У меня есть экран — заставка в моем проекте Xamarin Forms, и я проверяю учетные данные в нем, а затем в каждом условии запускаю основное действие с другим параметром по отношению к условию. Когда заставка завершит свою работу и исчезнет, приложение покажет черный экран примерно на 10 секунд, а затем отобразится главная страница

это мой Всплеск :

 [Activity(Theme = "@style/MainTheme.Splash",
              MainLauncher = true,
              NoHistory = true,
              ScreenOrientation = ScreenOrientation.Portrait)]
    public class SplashActivity : Activity
    {
        static readonly string TAG = "X:"   typeof(SplashActivity).Name;
        public override void OnCreate(Bundle savedInstanceState, PersistableBundle persistentState)
        {
            base.OnCreate(savedInstanceState, persistentState);
            Xamarin.Essentials.Platform.Init(this, savedInstanceState);
            Log.Debug(TAG, "SplashActivity.OnCreate");
        }

        protected override void OnResume()
        {
            base.OnResume();
            Task startupWork = new Task(() => { SimulateStartup(); });
            startupWork.Start();
        }

        async void SimulateStartup()
        {
            Some Code ...
            InvokeMainActivity("SomeType");
        }

        private void InvokeMainActivity(string type)
        {
            Intent _activity = new Intent(Application.Context, typeof(MainActivity));
            _activity.PutExtra("Key", type);
            _activity.AddFlags(ActivityFlags.NoAnimation);
            StartActivity(_activity);
        }
  

и это моя основная деятельность :

 [Activity(Label = "@string/app_name",
        Icon = "@drawable/icon",
        Theme = "@style/MainTheme",
        MainLauncher = false,
        LaunchMode = LaunchMode.SingleTask,
        ConfigurationChanges = ConfigChanges.Orientation | ConfigChanges.ScreenSize | ConfigChanges.Locale | ConfigChanges.LayoutDirection)
        ]
    public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
    {
        protected override async void OnCreate(Bundle bundle)
        {
            TabLayoutResource = Resource.Layout.Tabbar;
            ToolbarResource = Resource.Layout.Toolbar;

            base.OnCreate(bundle);

            Xamarin.Essentials.Platform.Init(this, bundle);
            Rg.Plugins.Popup.Popup.Init(this, bundle);

            global::Xamarin.Forms.Forms.Init(this, bundle);

            FFImageLoading.Forms.Platform.CachedImageRenderer.Init(enableFastRenderer: true);

            Window.DecorView.LayoutDirection = LayoutDirection.Rtl;

            string type = Intent.GetStringExtra("SomeType");

            LoadApplication(new App(type));
        }
    }
  

Как я могу это исправить?

Комментарии:

1. что такое «Некоторый код …»?

2. @AlessandroCaliaro Получает данные из Rest API и SecureStorage

3. может быть, это займет какое-то время…

4. @AlessandroCaliaro Конечно, это займет некоторое время, но прежде чем сменить вид деятельности. Когда действие изменилось экран становится черным

5. Помимо затрат времени на получение данных из Rest API и SecureStorage, которые вы также добавляете <item name="android:windowIsTranslucent">true</item> в свой Android styles.xml , у него не будет черного экрана при переключении страницы.

Ответ №1:

Благодаря @LeonLu-MSFT я добавляю этот код в style.xml без каких-либо изменений в MainActivity и Spalsh экране

 <item name="android:windowIsTranslucent">true</item>
  

У меня нет устройств Mac и ios для тестирования в ios

Ответ №2:

Я также столкнулся с подобной проблемой. Я исправил это, добавив

 <item name="android:windowIsTranslucent">true</item>
  

в ~ Resourcesvaluesstyles.xml .

Итак, если вы столкнулись с подобной проблемой, добавьте ее в соответствии с приведенным ниже снимком экрана, и, надеюсь, это также сработает для вас:

введите описание изображения здесь