最近项目重启Activity的需求(就是相当于reload),一般的做法就是这样的:
Intent intent = getIntent();
overridePendingTransition(0, 0);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
finish();
overridePendingTransition(0, 0);
startActivity(intent);
但是我这个Activity(B)的上一层Activity(A)是通过startActivityForResult启动的,以上面的方法重启B时,resultCode就是为0(RESULT_CANCELED),不为1(RESULT_OK)无法达到目的,于是想到这样来:
Intent intent = getIntent();
overridePendingTransition(0, 0);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
intent.addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT); //为了最后一个页面setResult()能传值给A
startActivity(intent);
overridePendingTransition(0, 0);
finish();
这样就可以解决我的问题了。
另外,resultCode为0的原因还可能因为B的launchMode为singleTask、singleInstance