首页Activity的启动模式设置成singTask引起的问题

问题描述:

         两个Activity:A和B,A是启动页面,启动模式设置为singTask,从A页面跳转到B页面后,点击home键,然后从手机的桌面上点击该App的图标,会发现该App打开的是A页面,而不是B页面,点击返回键会直接关闭App。如图所示:

原因:

        我们回想一下singleTask启动模式的Activity是怎么被创建的?

        要启动一个singleTask的Activity A,系统首先会寻找是否存在A想要的任务栈a,如果不存在就创建一个栈a,然后创建Activity A,将Activity A的实例放进去,如果存在栈a,就要看栈中是否有A的实例,没有就创建一个Activity A,将它的实例放进去,有了,就会把A调到栈顶,并调用它的onNewIntent方法,根据栈的“后进先出”的特点,想要将A调到栈顶,就先将A上面的Activity出栈,因此会销毁掉A上面所有的Activity【《Android开发艺术探索》中LaunchMode有介绍】

        所以就造成了上面的内容,因此我们想,只要不启动模式为singleTask的Activity A就不会造成这个问题,因此就在前面创建一个LActivity,在LActivity的onCreate方法里面进行页面跳转,跳转完成后结束掉LActivity。根据activity的生命周期,onStart是页面开始可见,在onCreate方法的注释里,在onCreate方法中引起调用onDestory的,就不会调用onStart,onResume,onPause等方法。

which case onDestroy() will be immediately called without any of the rest of the activity lifecycle ({@link #onStart}, {@link #onResume},{@link #onPause}, etc) executing.

最终实现理想效果:


你可能感兴趣的:(首页Activity的启动模式设置成singTask引起的问题)