In Android I have some activities, let's say A, B, C.
In A I use this code to open B:
Intent intent = new Intent(this, B.class);
startActivity(intent);
In B I use this code to open C:
Intent intent = new Intent(this, C.class);
startActivity(intent);
When the user taps a button in C I want to go back to A and clear the back stack (close both B and C). So when the user use the back button B and C will not show up, I've been trying the following:
Intent intent = new Intent(this, A.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
But B and C are still showing up if I use the back button when I'm back in activity A. How can I avoid this?
Starting in API 16 (Jelly Bean), you can just call
finishAffinity()
.Now you can also call
ActivityCompat.finishAffinity(Activity activity)
with the compatibility library.Be sure to set taskAffinity in the manifest to a package name unique to that group of activities.
See for more info:
http://developer.android.com/reference/android/support/v4/app/ActivityCompat.html#finishAffinity%28android.app.Activity%29
In manifest
and
Try adding
FLAG_ACTIVITY_NEW_TASK
as described in the docs forFLAG_ACTIVITY_CLEAR_TOP
:So your code to launch
A
would be:As per Wakka in Removing an activity from the history stack...
Add
android:noHistory="true"
attribute to your<activity>
in theAndroidManifest.xml
like this:Try using
and not
Use finishAffinity(); in task C when starting task A to clear backstack activities.