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