如何在应用程序启动"新鲜"时显示启动画面?

mob*_*ner 2 java xml android splash-screen

我想在应用程序生命周期中只显示一次启动画面.这是我的代码:

SplashScreenActivity.java:

final int welcomeScreenDisplay = 3000;

Thread welcomeThread = new Thread() {

    int wait = 0;

    @Override
    public void run() {
        try {
            super.run();

            while (wait < welcomeScreenDisplay) {
                sleep(1000);
                wait += 1000;
            }
        } catch (Exception e) {
            System.out.println("EXc=" + e);
        } finally {

            // Start other Activity
            startActivity(new Intent(SplashScreenActivity.this,
                    MainActiviey.class));
            finish();
        }
    }
};
welcomeThread.start();
Run Code Online (Sandbox Code Playgroud)

表现:

    <activity android:name=".SplashScreenActivity" android:label="test"
    android:noHistory="true"
        android:screenOrientation="portrait" android:configChanges="orientation|keyboardHidden|keyboard">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name=".MainActiviey" android:label="test"
         android:screenOrientation="portrait"
        android:configChanges="orientation|keyboardHidden|keyboard">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>
Run Code Online (Sandbox Code Playgroud)

问题是如果我按下硬件HOME按钮隐藏应用程序并再次在应用程序列表中打开应用程序.它将再次显示启动画面(而不是显示MainActivity).是否可以仅在应用程序启动"新鲜"时显示启动画面(不显示在onresume())?谢谢!

Kal*_*mah 6

你不能有这两个活动的意图:

  <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
Run Code Online (Sandbox Code Playgroud)

此外,您可能希望隐藏历史堆栈中的启动画面,以防您根据Ash建议决定在其中启动另一个活动.

您可以在活动代码上使用此标记:

android:noHistory="true"  
Run Code Online (Sandbox Code Playgroud)