Если ваше приложение не было «прервано», то # 1 уже должен работать и # 2 просто требует сохранения любых значений, которые не управляются автоматически, в Bundle в onSaveInstanceState () , а затем восстанавливает их в onRestoreInstanceState () .
Это своего рода хак, но я думаю, что лучшим вариантом для # 1 в случае фактического закрытия приложения будет сохранение самой последней Activity в onResume каждого из ваших классов Activity, а затем при первом запуске onCreate вашего первого действия сделайте проверку, затем начните правильное действие ... возможно, даже вставьте пустое действие в начале. Примерно так:
StartActivity:
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 ().