【问题标题】:Android Oreo(8.0) on back displays splash screenAndroid Oreo(8.0) 背面显示闪屏
【发布时间】:2019-10-01 06:47:55
【问题描述】:

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

应用程序午餐按预期显示初始屏幕并移至下一个活动(MainActivity)。如果我在 MainActivity 中按下后退按钮,它会再次显示闪屏片刻,然后自行返回 MainActivity。

这种情况仅发生在搭载 Samsung S7 和 Nexus 5X 的 Android 8.0 设备上。 在 Android 5.0(Samsung J7)中没有任何问题。

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

我尝试过的事情:

  • 添加 oreo 属性(V26 风格) android:windowSplashscreenContent 代替 android:windowBackground 在主题中。 example link
  • 在导航后在初始屏幕中添加 finish() 可以正常工作,但会显示一些崩溃效果,而且我想知道上述行为的原因。

感谢任何有关此问题的提示/根本原因。谢谢

编辑: 代码飞溅活动:

[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

【问题讨论】:

  • 首先,你可以在MainActivity中重写OnBackPressed方法,防止像这段代码public override void OnBackPressed() { }这样的后退按钮,如果仍然不行,你能提供一个关于你的启动画面的演示吗?我测试了docs.microsoft.com/en-us/xamarin/android/user-interface/… 链接,我无法重现这个问题,它在 Nexus 5X 中运行正常
  • @LeonLu-MSFT 按下后退按钮时的预期行为是像往常一样将应用程序移至后台,因此无法禁用它。添加了闪屏代码sn-p。如果您还需要什么,请告诉我。
  • @LeonLu-MSFT 更新了示例代码链接

标签: android xamarin xamarin.android android-8.0-oreo


【解决方案1】:

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

有关

&lt;item name="android:windowIsTranslucent"&gt;true&lt;/item&gt; 在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> 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-24
    • 1970-01-01
    • 2018-01-31
    • 2018-06-04
    • 2018-08-16
    • 1970-01-01
    相关资源
    最近更新 更多