不断调用Activity.startActivityForResult()
,这样会构成一个Activity启动链条,当页面一层层返回时,Activity.onActivityResult()
会被调用到。
但是,如果链条中的一个Activity提前关闭了,那会发生什么效果呢?提前关闭的Activity还能不能收到onActivityResult()
呢?提前关闭的Activity之前的Activity还能不能收到onActivityResult()
呢?
Activity的launchMode
没有定义,为standard
模式,启动Intent中也没有加入特殊的FLAG,最普通的启动方式。
一层层打开,在一层层关闭,log如下。
I/TAG: onCreate current level : 1
I/TAG: onCreate current level : 2
I/TAG: onCreate current level : 3
I/TAG: onCreate current level : 4
I/TAG: onActivityResult current level :3; data from level 4
I/TAG: onActivityResult current level :2; data from level 3
I/TAG: onActivityResult current level :1; data from level 2
在第二个页面,打开下一个页面,并关闭当前页面,之后一层层返回,效果如下。
I/TAG: onCreate current level : 1
I/TAG: onCreate current level : 2
I/TAG: onCreate current level : 3
I/TAG: onActivityResult current level :1; data from level 2
第二个页面提前关闭了,所以在第三个页面关闭时,它是收不到 onActivityResult
的。
第三页面关闭时回到了第一个页面,第一个页面时可以收到onActivityResult
的,参数中的数据是第二个页面关闭时setResult()
的数据。