New Intent() starts new instance with Android: launchMode="singleTop"


Question

I have Activity A with android:launchMode="singleTop" in the manifest.

If I go to Activity B, C, and D there I have menu shortcuts to return to my applications root activity (A).

The code looks like this:

Intent myIntent = new Intent(getBaseContext(), MainActivity.class);
startActivity(myIntent);

However, instead of returning to the already existing instance A of my MainActivity.class it creates a new instance -> it goes to onCreate() instead of onNewIntent().

This is not the expected behavior, right?

1
57
6/2/2017 4:44:07 AM

Accepted Answer

This should do the trick.

<activity ... android:launchMode="singleTop" />

When you create an intent to start the app use:

Intent intent= new Intent(context, YourActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP);

This is that should be needed.

68
3/11/2010 6:02:17 PM

What actually worked for me in the end was this:

Intent myIntent = new Intent(getBaseContext(), MainActivity.class);
myIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(myIntent);

Licensed under: CC-BY-SA with attribution
Not affiliated with: Stack Overflow
Icon