如果從ActivityB
回來時需要的ActivityA
一個特殊的行爲,你應該使用startActivityForResult(Intent intent, int requestCode)
而不是startActivity(Intent intent)
:
startActivityForResult(new Intent(this, ActivityB.class), REQUEST_CODE);
這樣一來,你就可以通過重載onActivityResult(int requestCode, int resultCode, Intent intent)
檢測ActivityA
的ActivityB
終止:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);
if (requestCode == REQUEST_CODE) {
doRefresh(); // your "refresh" code
}
}
這甚至如果通過後退按鈕的按下終止ActivityB
工作。在這種情況下,resultCode
默認爲RESULT_CANCELLED
。
您當前的刷新計劃運作可能的原因是因爲你正在運行在標準launchMode活動。這意味着,由於每一個新的實例經過的onCreate(startActivity(刷新)的每次調用生成活性A的新實例),創建這些不必要的情況下,給人耳目一新的活動的出現。爲了正確地做到這一點,你真的應該確定的onCreate(代碼),負責「清涼」活動,並將其移動到的onResume(),如奧維迪烏以下建議。 – glorifiedHacker