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

原文地址:https://www.cnblogs.com/olvo/p/2496680.html