“同时”启动两个Activity

       产品提出一个需求,需要从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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章