アプリが「終了」していない場合、#1 は既に機能しているはずです。#2 では、自動的に管理されない値を onSaveInstanceState() の Bundle に 保存し、それらをonRestoreInstanceState( )に復元する必要があります。
これは一種のハックですが、アプリが実際に終了した場合の#1の最良のオプションは、各ActivityクラスのonResumeに最新のActivityを保存してから、onCreateを最初に実行することだと思いますあなたの最初の活動はチェックを行い、正しい活動を開始します...おそらく最初に空の活動を入れてください。このようなもの:
開始アクティビティ:
public class StartActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// get last open Activity
String lastActivity = PreferenceManager.getDefaultSharedPreferences(this).getString("last_activity", "");
if (last_activity == MyActivity2.getSimpleName()) {
startActivityForResult(new Intent(this, MyActivity2.class));
} else if (last_activity == MyActivity3.getSimpleName()) {
startActivityForResult(new Intent(this, MyActivity3.class));
} else {
// assume default activity
startActivityForResult(new Intent(this, MyActivity1.class));
}
}
public void onActivityResult() {
// kill the activity if they go "back" to here
finish();
}
}
次に、他のすべてのアクティビティ (MyActivity1,2,3) で、次のように値を保存します。
@Override
public void onResume() {
Editor e = PreferenceManager.getDefaultSharedPreferences(this).edit();
e.putString("last_activity", getClass().getSimpleName());
e.commit();
super.onResume();
}
また、各アクティビティのデータの保存/復元を手動で処理する必要があります。必要なすべての値を各アクティビティの onPause() 内の設定に保存してから、onResume() で復元できます。