Let's say I have a simple app, with a SplashScreenActivity
and a MainActivity
.
Below is part of my AndroidManifest.xml
:
<activity
android:name=".front.activities.splashscreen.SplashScreenActivity"
android:launchMode="standard"
android:screenOrientation="portrait"
android:theme="@style/SplashTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".front.activities.main.MainActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:label="@string/Main_Title"
android:launchMode="singleTop"
android:screenOrientation="portrait"/>
And my SplashScreenActivity
opens MainActivity
in onCreate()
.
If the app is launched from Google Play instead of launcher, if I pressed home and click the app icon in the launcher, one more SplashScreenActivity
is launched again and therefore one more MainActivity
on the backstack.
SplashScreenActivity
has been launched again (Or by looking at logs)SplashScreenActivity
and MainActivity
is launched.After several trials, if we press back button, we will notice that there are multiple MainActivity
in the back stack.
SplashScreenActivity
will be launched. But if I press app icon from launcher again, it will not create a 3rd SplashScreenActivity
. It will bring the first launched MainActivity
to the top.SplashScreenActivity
to android:launchMode="singleTask"
. Does not help.MainActivity
to android:launchMode="singleTask"
. This will prevent multiple MainActivity
from being created, but does not solve the problem of starting SplashScreenActivity
multiple times. You may also assume MainActivity
should not be set to singleTask
.By clicking on the app icon in the launcher, Android should be able to find out that in my task manager, the app is already launched and will simply bring it to the top.
How can I fix this?
Yes, You can have more than one launcher activity in your application. This will not create any kind of compile-time or run time error.
Open Play Console. Select an app. Go to Release > Setup > Advanced settings. On the App Availability tab, select Unpublish.
Sign in with a Google Account that isn't already associated with a managed Google Play Accounts enterprise. Click Get started. Enter a name for your managed Google Play Accounts enterprise. Click Confirm.
Some launchers have this bug: when app is started from home screen, new instance of initial activity is created instead of resuming the app. It can be fixed by adding
if (!isTaskRoot()) {
finish();
return;
}
to onCreate()
of the initial activity.
See also:
Resume last activity when launcher icon is clicked,
Resume the Top Activity instead of starting the Launcher Activity
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With