如果您的應用程序還沒有被「終止」,那麼#1應該已經工作,#2只需要保存沒有被自動地管理到捆綁任何值onSaveInstanceState()然後onRestoreInstanceState()恢復它們。
這是一種破解,但我認爲在應用程序實際被終止的情況下,您最好的選擇是將最近的Activity保存在每個Activity類的onResume中,然後當您第一次運行你的第一個活動的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()中將其恢復。
謝謝fiXedd,我不認爲這是一個破解。這聽起來像一個調度模式。我只是希望我錯過了一些東西,還有更簡單的方法。 – Bostone 2009-09-20 18:38:39
如何做startActivity,然後完成()而不是startActivityForResult? – 2011-08-20 19:06:42
還要注意清單中您的活動launchMode設置。我已將它設置爲「singleTask」,但將其更改爲「singleTop」以便正確恢復最後一次活動。我在http://www.intridea.com/blog/2011/6/16/android-understanding-activity-launchmode找到了一個很好的解釋。 – 2012-12-14 12:02:15