saramakkuroと申します。
あくまで一例ですが、終了フラグを用意しておき、OnRestart()で実装する方法があります。
以下、参考まで。
//フラグを用意するクラス(getter/setterのみ用意)
public static class Flag{
private boolean finishflg;
public boolean getFinishFlg(){
return finishflg;
}
public void setFinishFlg(boolean flg){
finishflg = flg;
}
}
-------------------------------------------------------
//消す方のActivity側の処理
public class OneActivity extends Activity {
public static Flag mFlag;
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
mFlag = new Flag();
}
@Override
public void onRestart(){
super.onRestart();
if(mFlag.getFinishFlg() == true){
finish(); //見えてないやつだったらここで死ぬ
}
}
}
-------------------------------------------------------
//表示するActivity側の処理
public class ThreeActivity extends Activity{
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
OneActivity.mFlag.setFinishFlg(true);
finish(); //このActivityの終了
}
}
(1),(2)についてはこの実装で大丈夫かと思います。
(ただし(2)の場合、TwoActivityにもOneActivityと同じ処理が必要です)
実際に動かしてはいませんが、こんな感じかと思います。