一、背景
如果从桌面启动的MainActivity的launchMode=SingleTask,那么当app调用其他的Activity时,用户回到home键回到桌面,再次进入App时,原来的界面会消失,直接显示在来MainActivity所在的页面
二、原理分析
按照我们应用的启动流程,首先进入的是MainActivity,这个时候再次进入一个其他的Activity,那么我们回到用户桌面,再次进入App,这个流程图大致是:
start MainActivity -> 首页 -> 进入另外一个XActivity,从桌面进入App -> MainActivity
- 那么这个时候XActivity和MainActivity在同一个任务栈并且XActivity是在MainActivity之上
- 当我们再次从桌面进入App的时候,这个时候系统会调用Launch属性的MainActivity,由于MainActivity是SingleTask会进行清除在其之上的Activity,将自己置于栈顶
- 所以我们再次进入App后,原先进入的Activity页面不见了而显示了首页,就是因为MainActivity的SingleTask会进行清除其之上的Activity
三、解决办法
将LaunchActivity用做桥梁的作用,启动后将自己finish,每次启动App的时LaunchActivity都是处于栈顶,而不是直接startMainActivity