Android Oreo(8.0) 背面显示闪屏

Android Oreo(8.0) on back displays splash screen

我在 android 8.0 设备上观察到这种奇怪的行为。

应用午餐按预期显示启动画面并移至下一个 activity(MainActivity)。如果我在 MainActivity 中按下后退按钮,它会再次显示启动画面并自行返回 MainActivity。

这仅发生在 Android 三星 S7 和 Nexus 5X 中检查的 8.0 设备中。 它在 Android 5.0(Samsung J7) 中没有任何问题。

在这里,我在启动画面 activity 以及启动主题中添加了 NoHistory = true。 类似于此处解释的初始屏幕代码:xamarin android splash

我尝试过的事情:

感谢 hints/root-cause 解决此问题。谢谢

编辑: 代码启动 activity:

[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>

添加了设备屏幕录制here

示例代码已上传here

我在我的设备上测试了你的代码,这个问题与

有关

<item name="android:windowIsTranslucent">true</item> 在 styles.xml 的 InspectTheme 中。

如果我删除这一行,这个 GIF 是 运行 结果。

现在有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>