如果您的应用程序尚未“终止”,那么#1 应该已经可以工作,而#2 只需将任何未自动管理的值保存到 onSaveInstanceState()中的 Bundle 中,然后在onRestoreInstanceState()中恢复它们。
这是一种 hack,但我认为在应用程序实际被终止的情况下,#1 的最佳选择是将最新的 Activity 保存在每个 Activity 类的 onResume 中,然后当你第一次运行 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() 中恢复它。