博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
activity启动模式
阅读量:6275 次
发布时间:2019-06-22

本文共 1141 字,大约阅读时间需要 3 分钟。

本质上是activity的复用;

standard:无复用;

singleTop:栈顶复用

singleTask:栈内复用;

singleInstance:app复用(单例模式)。

 

http://www.jianshu.com/p/5f8be91160b4

  • standard

    无需设置,是默认的启动模式。在上述代码的情况下,不管有没有已经存在的实例,都会生成新的实例。但是这种模式并不会使用新的Task。只有按下返回键(即结束当前Activity)才会回到上一个Activity。

  • singleTop:

    在上述代码的情况下,如果当前Task只有一个Activity在其中,那启动Activty时并不产生新的实例,启动的还是当前自身。如果按下返回键就会立即退出程序(因为Task中只有当前这一个Activity)。
    如果当前Task有多个Activity在其中,只有在栈顶的Activity才会重复使用,也就时说如果要启动的Activity并不在栈顶,系统就会创建新的Activity实例并加载到栈顶(此时就与standard模式相同)。

    举个例子:比如说想要Activity的启动顺序是A-B-C-D-D-D,如果D的launcherMode设置为singleTop,那么最终的启动顺序其实是A-B-C-D,也就是重复利用了栈顶的ActivityD。

  • singleTask:

    如果要启动的Activity不存在,则创建新的实例并加到栈顶。
    如果要启动的Activity已经位于栈顶,则与singleTop模式相同。
    如果要启动的Activity已经存在于栈中,则会弹出这个Activty上面的所有其他Activty,使此Activity变为栈顶对象,显示到屏幕前。

    举个例子:比如说想要Activity的启动顺序是A-B-C-D-A,如果A的launcherMode设置为singleTask,那么最终任务栈中只会剩下A,位于A上面的BCD都会被回收。

  • singleInstance:

    首先要要注意的是采用singleInstance模式加载的Activity总是位于栈顶,并且该栈只包含这一个Activity。
    如果要启动的Activity不存在,则首先创建一个新的Task,再创建目标Activity实例,并加入栈顶。
    如果要启动的Activty已经存在,则无论它位于那个应用程序中,无论位于哪个Task中,系统都会把该Activity所在的Task转到前台并显示Acitivty。

文/sunshine2015(简书作者)
原文链接:http://www.jianshu.com/p/5f8be91160b4
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
你可能感兴趣的文章
java 用反射简单应用,将Object简单转换成map
查看>>
Storm中的Worker
查看>>
dangdang.ddframe.job中页面修改表达式后进行检查
查看>>
Web基础架构:负载均衡和LVS
查看>>
Linux下c/c++相对路径动态库的生成与使用
查看>>
SHELL实现跳板机,只允许用户执行少量允许的命令
查看>>
SpringBoot 整合Redis
查看>>
2014上半年大片早知道
查看>>
Android 6.0指纹识别App开发案例
查看>>
正文提取算法
查看>>
轻松学PHP
查看>>
Android android.support.design包
查看>>
CheckBox:屏蔽setChecked方法对OnCheckedChangeListener的影
查看>>
java线程池
查看>>
UI面试内容
查看>>
Linux之RPM详解
查看>>
Windows Azure 常见问题及测试题
查看>>
android-genymotion模拟器使用
查看>>
phpstudy2018 windows 下搭建https 环境
查看>>
使用guava来进行优雅的函数式编程
查看>>