Activity跨顺序跳转

第一种情况:

《Activity跨顺序跳转》

处理办法:

B通过Intent启动C后,添加一句代码:B.this.finish();

Intent intent = new Intent(B.this,C.class);

startActivity(intent);

B.this.finish();

第二种情况:

《Activity跨顺序跳转》

即在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种情况。。。

第三种情况:

《Activity跨顺序跳转》

结果发现每次通过 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。

    原文作者:底层码农
    原文地址: https://www.jianshu.com/p/bb51eaba71a3
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞