美文网首页
开发日记

开发日记

作者: 一只胖Wa牛 | 来源:发表于2016-09-12 11:11 被阅读0次

    问题描述:

    关于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边心里慰问你家人的机会~

    相关文章

      网友评论

          本文标题:开发日记

          本文链接:https://www.haomeiwen.com/subject/odjpettx.html