In fact, this can be achieved using startActivityForResult
public class A extends Activity { public onButtonClick() { startActivityForResult(new Intent(this, B.class), 0); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (resultCode == RESULT_OK) { finish(); } } } public class B extends Activity { public onButtonClick() { startActivityForResult(new Intent(this, C.class), 0); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (resultCode == RESULT_OK) { setResult(RESULT_OK); finish(); } } } public class C extends Activity { public onButtonClick() { setResult(RESULT_OK); finish(); } }
I think this is the right way, you do not leak in this way.
PS: I know this is an old post, but maybe someone will find it useful.
sidon source share