开发日记

2016-09-12  本文已影响0人  一只胖Wa牛

问题描述:

关于activity的四种启动模式这里不再做详细描述

MainActivity设置启动模式为singleTop,那么我按home键让app变成
background级别的应用,之后我通过app的lable图标点击进入程序,发现是新打开了一个应用,而不是使用原本在后台的那个,多次重复以上步骤,发现每次都相当于新开辟一个任务栈,而不是用的原来的任务栈,这样我启动多次之后,相当于开了n个app程序,需要按多次返回才能彻底退出当前任务,这是不对的。

思路: 修改MainActivity的启动模式为singleTask,以上问题解决,但是由于原来loginActivity也设置了启动属性为singleTask这时候,假如进入应用跳转到服务单详情页面,再按home键,重新找到当前应用的lable进入应用,发现这时候显示的页面是MainActivity,这又是不符合逻辑的
操作图如下:


栈.png

原因:
当启动launchModel=SingleTask的activity时候,如果他处于任务栈顶端时候还好,假如他在栈底,会把他上面所有的activity都clear掉

解决方案:我把LoginActivity的singleTask启动模式删掉.按照默认的标准模式来,那么以上所有问题都解决


解决.png

原因:启动流程loginActivity-->MainActivity,这时候我先启动的是LoginActivity启动模式是stand,所以是不会清掉上面的activity的,问题得到解决

关于SingleTask,故名思意就是单个任务的意思,也就是说单个任务栈中只能有一个实例,假如我现在有一个A、B、C三个页面其中A是singleTask,如果我启动顺序是A-B-C-A,那么这是任务栈中只有A,会自动把处于他上面的给清掉,OK问题分析就这么多

前任留坑,后任填,万望大家写代码一定要留心,不要给你后任边改bug边心里慰问你家人的机会~

上一篇 下一篇

猜你喜欢

热点阅读