【Android开发日记】Activity 跨顺序跳转的三种情况

第一种情况:

【Android开发日记】Activity 跨顺序跳转的三种情况_第1张图片

处理办法:

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。


参考:http://blog.csdn.net/wangjia55/article/details/8596747


你可能感兴趣的:(Activity跳转,Android启动模式)