Android Oreo (8.0) на задней панели отображает заставку - PullRequest
0 голосов
/ 14 мая 2019

Я наблюдал это странное поведение с устройствами Android 8.0.

На обеде приложения показывает заставку, как и ожидалось, и переходит к следующему действию (MainActivity). Если я нажимаю кнопку «Назад» в MainActivity, он на мгновение снова показывает заставку и сам возвращается в MainActivity.

Это происходит только в устройствах Android 8.0, проверенных в Samsung S7 и Nexus 5X. Где, как это работало без проблем в Android 5.0 (Samsung J7).

Здесь я добавил NoHistory = true как в свою заставку, так и в тему заставки. Код экрана-заставки, аналогичный описанному здесь: xamarin android splash

То, что я пытался:

  • Добавление свойства oreo (стиль V26) android: windowSplashscreenContent вместо Android: фоновое окно в теме. пример ссылки
  • Добавляя finish () в заставке после навигации, он работает, но показывает некоторый эффект сбоя, более того, я хочу знать причину вышеуказанного поведения.

Ценится за любые подсказки / первопричину этой проблемы. Спасибо

Edit: Всплеск активности кода:

[Activity(Theme = "@style/MyTheme.Splash", MainLauncher = true, NoHistory = true)]
public class SplashActivity : AppCompatActivity
{
    public override void OnCreate(Bundle savedInstanceState, PersistableBundle persistentState)
    {
        base.OnCreate(savedInstanceState, persistentState);
    }

    // Launches the startup task
    protected override void OnResume()
    {
        base.OnResume();
        Task startupWork = new Task(SimulateStartup);
        startupWork.Start();
    }

    // Simulates background work that happens behind the splash screen
    private async void SimulateStartup()
    {
        await Task.Delay(1000); // Simulate a bit of startup work. 
        StartActivity(new Intent(Application.Context, typeof(MainActivity)));
        //Finish();
    }
    public override void OnBackPressed()
    {

    }
}

Тема:

  <style name="InspectTheme.Splash" parent ="Theme.AppCompat.Light.NoActionBar"> 
<!--<item name="android:windowSplashscreenContent">@mipmap/ic_splash</item>-->
<item name="android:windowBackground">@mipmap/ic_splash</item>
<item name="android:windowNoTitle">true</item>
<item name="android:noHistory">true</item>
<item name="android:windowFullscreen">true</item>

Добавлена ​​запись экрана устройства здесь

Пример загруженного кода здесь

1 Ответ

0 голосов
/ 16 мая 2019

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

<item name="android:windowIsTranslucent">true</item> в InspectTheme файла styles.xml.

Если я удаляю эту строку, результат GIF выполняется.

enter image description here

Сейчас есть файл styles.xml

<?xml version="1.0" encoding="UTF-8" ?>
<resources>
<style name="InspectTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowNoTitle">true</item>
<item name="android:windowActionBar">false</item> 
<item name="android:windowContentOverlay">@null</item>

<item name="android:textAllCaps">false</item> 
 </style>


 <style name="InspectTheme.Splash" parent ="Theme.AppCompat.Light.NoActionBar"> 
<!--<item name="android:windowSplashscreenContent">@mipmap/ic_splash</item>-->
<item name="android:windowBackground">@mipmap/ic_splash</item>
<item name="android:windowNoTitle">true</item>
<item name="android:noHistory">true</item>
<item name="android:windowFullscreen">true</item>
    </style>
</resources> 
...