zoukankan      html  css  js  c++  java
  • activity启动模式

    本质上是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
    著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
  • 相关阅读:
    Kafka中数据的流向
    kafka调试中遇到could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient)
    knife4j
    SpringBoot使用ELK日志收集ELASTIC (ELK) STACK
    Jedis连接池(实际项目可用)
    Redis windows安装帮助
    Spring Boot 多数据配置更新
    SpringBoot使用Mybatis-Generator
    tkinter显示图片
    window nodejs 版本管理器 nvm-windows 教程
  • 原文地址:https://www.cnblogs.com/feng9exe/p/5942988.html
Copyright © 2011-2022 走看看