如果从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