I'll show you the way I do it when I want to logout from an app.
This can work for you to finish activities B -> C -> D and start activity A
First I create a logout method in a class with session details
public void logoutUser(){
clearSharedPreferences();
Intent broadcastIntent = new Intent();
broadcastIntent.setAction("com.test.your.packgage.ACTION_LOGOUT");
_context.sendBroadcast(broadcastIntent);
// We send a broadcast to all registered activities
// this way all activities will run finish ()
// And they will be automatically closed
LocalBroadcastManager.getInstance(_context).sendBroadcast(broadcastIntent);
}
public void clearSharedPreferences() {
// Clearing all data from Shared Preferences
editor.clear();
editor.commit();
}
Then, in every activity you have to do this:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("com.test.your.packgage.ACTION_LOGOUT");
registerReceiver(new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Log.d("onReceive","Logout in progress");
finish();
}
}, intentFilter);
}