我已经为我的应用实现了启动屏幕,因为该应用需要几秒钟来加载数据。当我“从寒冷开始”时,初始屏幕运行正常。但是,当我按“后退”按钮并从“最新消息”列表重新启动应用程序时,它以黑屏而不是初始屏幕开头(或者有时它显示最新消息列表,直到“主要活动”出现为止)。如何使启动屏幕再次显示?
我的MainActivity从我的SplashActivity启动。这样会在屏幕中间放置一个带有图标的屏幕,以向用户显示正在发生的事情。主要活动是作为异步任务启动的。
这两个活动位于AndroidManifest.xml文件中:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="Recorder.Recorder" android:versionCode="1" android:versionName="1.0" android:installLocation="auto">
<uses-sdk android:minSdkVersion="22" android:targetSdkVersion="27" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<application android:label="Recorder"
android:theme="@style/MyTheme.Splash"
android:icon="@drawable/Icon">
<!-- Parent activity -->
<activity android:name=".MainActivity"/>
<!-- A child of the main activity -->
<activity
android:name=".informationDisplayActivity"
android:parentActivityName=".MainActivity" />
</application>
</manifest>
主题在styles.xml中定义:
<style name="MyTheme.Splash" parent ="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowBackground">@drawable/splash_screen</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowFullscreen">true</item>
</style>
我正在使用以下标志启动SplashActivity:
[Activity(Theme = "@style/MyTheme.Splash", MainLauncher = true, NoHistory = true)]
public class SplashActivity : AppCompatActivity
{}
MainActivity如下:
[Activity(Label = "Recorder", Icon = "@drawable/Icon", MainLauncher = false )]
public class MainActivity : AppCompatActivity, GestureDetector.IOnGestureListener
{}
无论我是从主屏幕“冷启动”还是在按“后退”按钮后从“最近”列表启动,都会调用My SplashActivity.OnCreate()。但是,我注意到,从主屏幕启动应用程序后,会在调用OnCreate()之前显示初始屏幕,因此实际上显示了正在加载活动。从最新列表重新启动时,我希望它看起来完全一样。但是,初始屏幕不再显示。取而代之的是,我出现黑屏,或者有时会显示最新列表,直到出现MainActivity。
我为我的活动(LaunchMode,ClearTaskOnLaunch)尝试了不同的标志,我尝试在onBackButtonPressed()中调用Finish()以确保我的主要活动被正确地清除了,我试图切换回我的启动画面主要活动退出时的屏幕主题,但没有运气。我发现的唯一解决方法是在MainActivity.OnBackButtonPress()中调用ExcludeFromRecents()。这迫使用户从主屏幕重新启动,因此他们看到的是初始屏幕,而不是(令人不安的)空白屏幕。但是,这并不是我真正想要的。用户应该能够从“最新消息”列表中启动该应用程序。如果按下了后退按钮,则其外观应与从主屏幕启动该按钮一样。
我发现了很多有关相反问题的问题(不需要时会显示启动屏幕)。我希望有人可以帮忙。