您的位置:首页 > 其它

“同时”启动两个Activity

2016-02-23 14:22 253 查看
       产品提出一个需求,需要从Activity1跳转到Activity3,但从Activity3返回时要返回到Activity2。

       最初的实现方式是,从Activity3返回(调用finish())时,从Activity3启动Activity2。
       这种方式不太好。首先,从显示上,用户会在Activity3消失后看到一段时间的Activity1,再看到Activity2。这是由于当启动Activity2需要时间长时,Activity3 finish()后,app先执行Activity1的onRestart、onStart、onResume、onPause,再执行Activity2的onCreate、onStart、onResume。这样会导致Activity3消失后,Activity1先恢复显示,再显示activity2。另外,从代码编写角度,activity3执行finish()的地方,都要写一份启动activity2的启动代码,代码维护性不好。

       之后采用Activity1“同时”启动Activity2、Activity3的方式,实现了预期的效果。代码如下:
Intent intent = new Intent(this, MyActivity2.class);
startActivity(intent);

Intent intent2 = new Intent(this, MyActivity3.class);
startActivity(intent2);

        
       问题虽然解决,但我很好奇,这个过程中Activity栈的结构是如何变化的?
       看到的现象是从Activity1打开Activity3,从Activity3返回时,看到的是Activity2;当从Activity2返回,看到的才是Activity1。好像栈的结构是1->2->3。
       经过测试,实际上是Activity1先启动Activity3,从Activity3返回时时,会启动Activity2。具体的栈结果是1->3,然后变为1->2。
      具体的测试结果:
一、Activity1启动



二、Activity1 启动Activity3



三、从Activity3返回 此时启动Activity2



四、从Activity2返回



测试源码: http://download.csdn.net/detail/zhxlxh/9440381
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: