zoukankan      html  css  js  c++  java
  • Activity 的四种模式

    四种模式:

    activity的模式其实说的是"任务"与"实例化"的问题

      实例化 任务
    standard 多例 前后activity均在同一任务
    singleTop 单例/多例 前后activity均在同一任务
    singleTask 单例 与之前的不在同一任务,与之后的在同一任务(开启一个以此为根的新任务栈)
    singleInstance 单例 与其他不在同一任务(与其它都不在同一任务栈)

    1. standard: 标准模式: 实例化多次的同一activity可在同一任务栈(例: ABABAAB). 用途: 大多数

    2. singleTop: 单顶模式: 在栈顶则实例化一次(例: ABABAB) . 用途:如果开启自己的时候不用实例化, 如果实例化了,退一次还是原来的,用户体验很不好, 不知道刷新页面是不是用在本activity中开启自己?

    3.singleTask:单任务模式: 开启一个新的任务栈,以此为根.(例: CA , BACA[B为单任务]), 用途: 需要单例(还是防止刷新页面+优化内存), 又需要单任务(比如用了startActivtyForResult),

    4.singleInstance: 自己一个任务栈, 孤岛.(AC, B, AC[B为单例]).用途: 比如: 十个activty对应十个任务栈, 都想开启一个activity.标准的话, 太耗性能. 单顶,用不到,单任务的话(还用ABCD举例, B为一个activity, AC为想开启B的acitivity), 如果A先开启B,B又开启D,C开启了B,又想开启E.见图.我想这时候就该用单例了.

    image

    PS: 单例模式和单任务模式都是一个实例, 通常用在构造成本很大但是切换成本较小的情况下. 构造成本大?就是构造的时候要干好多事呗!

  • 相关阅读:
    一条select语句的执行流程
    理解数据库的事物,ACID,cap
    java并发volatile和sychnorized的底层机制
    避免死锁的几种方式
    如何减少线程上下文切换
    RestTemplate设置超时时间
    spring事务隔离级别和传播级别
    mysql数据库与其他数据库的区别
    spingcloud组件注解汇总
    python二级选择题易错知识点总结
  • 原文地址:https://www.cnblogs.com/olvo/p/2496680.html
Copyright © 2011-2022 走看看