0

スパッシュスクリーンに問題があります。アプリを起動すると、スプラッシュ スクリーン アクティビティが数秒間起動します。その後、主な活動が開始されます。

また、メイン アクティビティでホーム ボタンを押してアプリ リストからアプリを再起動すると、アプリが既にバックスタックにあるにもかかわらず、スプラッシュ アクティビティが再び起動します。しかし、私は主な活動がメモリから復元されることを期待しています。

そして、そのAndroidの後に戻るボタンを押すと、メインアクティビティの前のコピーに戻ります。

スプラッシュ画面を一度だけ表示するにはどうすればよいですか? ホームボタンがクリックされる前に最後に見た画面からアプリを再起動するにはどうすればよいですか?

    <activity
            android:name=".ui.SplashActivity"
            android:noHistory="true"
            android:screenOrientation="portrait"
            android:label="@string/app_name">

        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>
            <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter>
    </activity>

    <activity android:name=".ui.MainActivity"/>
4

1 に答える 1

5

これは設計上の問題です。ランチャー アクティビティは、スプラッシュ スクリーン アクティビティであってはなりません。代わりに、メイン アクティビティの onCreate メソッドでスプラッシュ アクティビティを開きます。そうすれば、それが新たに開かれると、 onCreate が呼び出され、スプラッシュ画面が表示されます。それ以外の場合、onResume を呼び出すアプリが単に再開された場合、スプラッシュ スクリーン アクティビティを開く呼び出しはありません。

次に、マニフェストを次のように変更できます。

<activity
        android:name=".ui.MainActivity"
        android:noHistory="true"
        android:screenOrientation="portrait"
        android:label="@string/app_name">

    <intent-filter>
        <action android:name="android.intent.action.MAIN"/>
        <category android:name="android.intent.category.LAUNCHER"/>
    </intent-filter>
</activity>

<activity android:name=".ui.SplashActivity"/>
于 2012-10-28T19:52:16.767 に答える