zoukankan      html  css  js  c++  java
  • 我对standard、singleTop、singleTask和singleInstance四种Activity启动模式的理解

    之前自学android的时候,单从视频和书本上对这四种启动模式仅仅有了初步的字面上的理解。最近实战了下,也对这四种启动模式有了比较清晰的概念。
    首先说下什么是Activity,按照我的理解,我们在手机上看到的每一个页面都是一个Activity,包括系统的桌面,也是一个Activity。
    要启动一个Activity有四种模式:standard(标准启动模式)、singleTop、singleTask、singleInstance。
     
    注: Aty1_1和Aty2_1为两个不同的Activity,Aty1_1和Aty1_2为同一个Activity中的不同实例。
    1. standard
        不同的Activity在同一个栈中,
        每次创建新实例的时候,新实例便会堆放到栈顶。
        
          当点返回键的时候,便会从栈顶按顺序将实例移除栈。直至栈为空则退回到桌面。
     
    2. singleTop
        不同的Activity在同一个栈中。   
        ① 如果此时Aty1的实例在栈顶,此时再创建一个新的Aty1并不会成功。
        
        ② 如果Aty_1不在栈顶,此时再创建一个Aty1的实例,会产生一个新的Aty1实例到栈顶。
        
        当点返回键的时候,便会从栈顶按顺序将实例移除栈。直至栈为空则退回到桌面。
        
    3. singleTask
        不同的Activity在同一个栈中。
        ① 如果此时Aty1的实例在栈顶,此时再创建一个新的Aty1并不会成功。
      
        ② 如果Aty_1不在栈顶,此时再创建一个Aty1的实例,页面会返回到任务栈中存在的Aty1的实例,并将Aty1上面所有的实例移出栈。
        
        当点返回键的时候,便会从栈顶按顺序将实例移除栈。直至栈为空则退回到桌面。
     
    4. singleInstance
        不同的Activity 处于不同栈中
        ① 如果此时Aty1的实例在栈顶,此时再创建一个新的Aty1并不会成功。
       
        ② 如果此时Aty2的实例还未被创建,则创建的Aty2的实例时会存放到一个新的任务栈中。
        
        ③ 如果此时Aty1的实例已存在且我们在Aty2的页面中创建新的Aty1实例时,则不会创建新的Aty1实例,而是页面跳转到原来任务栈中存在的Aty1的实例,但存放Aty2实例的任务栈仍然存在
        
          
        当点返回键的时候,便会依次销毁相应的任务栈,直至任务栈数为空则退回到系统桌面。
     
    以上是我对安卓四种Activity启动模式的理解,如果有不对的地方还望指正。
  • 相关阅读:
    经典算法之冒泡排序(Bubble Sort)-Python实现
    经典算法之快速排序(Quick Sort)-Python实现
    2020年SRE的随心感悟
    django: 像正常运行django的项目运行单个文件
    整理一下javascript中offsetWidth、clientWidth、width、scrollWidth、clientX、screenX、offsetX、pageX的具体含义
    requestAnimationFram 的优势及使用场景
    js 隐式数据转换带来的BUG
    为什么我不建议在js中使用链接变量分配
    关于JS函数传参的数据修改
    实现一个查看浏览器内核及版本号的功能函数
  • 原文地址:https://www.cnblogs.com/EX32/p/4623764.html
Copyright © 2011-2022 走看看