• Android教程 -07 Activity的任务栈和启动模式


    Activity是由任务栈管理的,一般情况下一个应用程序只有一个任务栈。

    什么是栈?

    栈是一种常用的数据结构,栈只允许访问栈顶的元素,栈就像一个杯子,每次都只能取杯子顶上的东西
    这里写图片描述

    栈的特点就是先进后出,与栈截然相反的是队列,队列的特点是先进先出。

    Activity就是采用栈结构进行管理的,先打开的Activity是最后退出的。

    1. 一个应用程序一被开启系统就给他分配一个任务栈,当所有的activity都退出的时候,任务栈就清空了。
    2. 任务栈的id是一个integer的数据类型 自增长的。
    3. 在android操作系统里面会存在多个任务栈,一般一个应用程序对应一个任务栈。
    4. 桌面应用和一般的应用程序是一样的,任务栈的行为也是一样。
    5. 默认情况下, 关闭掉一个应用程序,清空了这个应用程序的任务栈。应用程序的进程还会保留。

    Activity启动模式

    Android系统中的Activity可以说一件很赞的设计,它在内存管理上良好的设计,使得多任务管理在Android系统中运行游刃有余。但是Activity绝非启动展示在屏幕而已,其启动方式也大有学问,本文讲具体介绍Activity的启动模式的诸多细节,纠正一些开发中可能错误的观点,帮助大家深入理解Activity。

    Activity有四种启动模式, 我们一般采用默认的启动模式,如果使用其它的启动模式? 非常简单只需要在清单文件Activity节点下做如下配置就可以了:

          <activity android:name=".task.Task2Activity"
               android:label="task2"
               android:launchMode="singleInstance"
               >
           </activity>

    四种启动模式分别为:

    standard

    默认标准的启动模式,每次startActivity都是创建一个新的activity的实例。适用于绝大大数情况

    singleTop

    单一顶部,如果要开启的activity在任务栈的顶部已经存在,就不会创建新的实例,而是调用 onNewIntent() 方法。

    singletask

    单一任务栈 , activity只会在任务栈里面存在一个实例。如果要激活的activity在务栈里面已经存在,就不会创建新的activity,而是复用这个已经存在的activity,调用 onNewIntent() 方法,并且清空当前activity任务栈上面所有的activity

    singleInstance

    Activity在单独的任务栈中,单一实例,整个手机操作系统里面只有一个实例存在。

    博客对于新手来说看起来可能比较费劲,如果大家不明白的话,可以参考视频
    视频为本篇播客知识点讲解,建议采用超清模式观看, 欢迎点击订阅我的优酷

    视频1 任务栈

    视频2 启动模式

  • 相关阅读:
    signal(SIGCHLD, SIG_IGN)和signal(SIGPIPE, SIG_IGN);
    关于pthread_cond_wait使用while循环判断的理解
    linux的sleep()和usleep()的使用和区别
    C中结构体的存储分配
    扯扯python的多线程的同步锁 Lock RLock Semaphore Event Condition
    线程属性的初始化以及销毁
    Mysql数据库一个表字段中存了id,并以逗号分隔,id对应的详细信息在另一个表中
    sqlyog 注册码
    Oracle 12C卸载图文教程
    Oracle12c Release1安装图解(详解)
  • 原文地址:https://www.cnblogs.com/hehe520/p/6329909.html
Copyright © 2020-2023  润新知