第一种情况:
处理办法:
B通过Intent启动C后,添加一句代码:B.this.finish();
Intent intent = new Intent(B.this,C.class);
startActivity(intent);
B.this.finish();
第二种情况:
即在C中点击back键会 回退到B,但是要通过Intent跳转到 A。
处理办法:
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
Intent intent = new Intent(B.this,C.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
finish();
我遇到了第2种情况,也是采用的上述办法。可是今天的BUG让我明白,我遇到的其实是第3种情况。。。
第三种情况:
结果发现每次通过 A→B→C→A → A 利用之前由0传递的值联网下载数据,这时php给我返回了上千字的错误log...
解决办法:
在方法二基础上再加一句:intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
Intent intent = new Intent(B.this,C.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(intent);
finish();
原因:
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
如果在当前Task中,有要启动的Activity,那么把该Acitivity之前的所有Activity都关掉,并把此Activity置前以避免创建Activity的实例。
但是对于从C跨过B跳转到的A来说,是一个新的A,原来的A已经不在了。那么原本由0传给A的值自然是空的了。
再加上intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
A还是原来的A。