博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android (Launch Mode) 四种启动模式
阅读量:6410 次
发布时间:2019-06-23

本文共 1040 字,大约阅读时间需要 3 分钟。

hot3.png

1.standard

\

通过textView.setText(this+""); 根据HashCode(activityId)可判断出每次都创建了新Activity : startActivity(ActivityX.this,ActivityX.class)。

上图中A1、A2、A3是代表ActivityA的三个实例。

2.singleTop

\

如果栈顶已有要创建的Activity实例,则将intent发送给该实例(hashcode=41e706d0)而不发给新实例。用singleTZ喎�"/kf/ware/vc/" target="_blank" class="keylink">vcMSjyr2/yb3ivvbVu7altuC49tbYuLTP4M2stcRBY3Rpdml0ebXEzsrM4qGjPC9wPgo8cD7J+sP81tzG2qO6PC9wPgo8cD48aW1nIHNyYz0="/uploadfile/Collfiles/20140216/2014021609080661.jpg" alt="\">

注:其中填充为绿色的两个方块是代表同一个Activity实例(activityId相同)。

 

如果是A-->B-->A,如下:

 

A:singleTop

B:standard

\

从B跳到A时,A若不在栈顶则和standard模式效果一样创建一个新A实例。

若是A-->B-->A-->B-->A,这时的运行情况如下:

\

通过HashCode可以很清楚地知道是一个新实例还是一个已存在的实例。

生命周期(A-->B-->A):

\

 

3.singleTask

A:singleTask

B:standard

A-->B-->A-->B:

\

注:绿色方块是指同一个Activity实例。关于它的生命周期,通过Intent启动一个Activity,如果系统已经存在一个实例,系统就会将请求发送到这个实例上,但这时系统不会再调用onCreate来处理请求数据,而是调用onNewIntent方法。

4.singleInstance

A:standard

B:singleInstance

注:一个task就是一个栈,一个栈里可放入多个Activity。taskId=this.getTaskId()。

taskId=1671的栈先回退完,之后再回退taskId=1672的栈。

转载于:https://my.oschina.net/u/2933456/blog/861529

你可能感兴趣的文章
Linux Foundation(笔记)
查看>>
Java学习第二十五天
查看>>
vim配置
查看>>
ubuntu 把软件源修改为国内源和更新
查看>>
随机产生四则运算,导入导出文件
查看>>
位运算符
查看>>
winform自定义控件
查看>>
C#编码好习惯
查看>>
避其锋芒,侧翼出击。——司马亮创业回忆录(一)
查看>>
scope
查看>>
一起谈.NET技术,晚绑定场景下对象属性赋值和取值可以不需要PropertyInfo
查看>>
一起谈.NET技术,.Net Framework源代码中的模式之Prototype(原型模式)
查看>>
[shell 命令] find 查找文件
查看>>
windows下启动mysql服务的命令行启动和手动启动方法
查看>>
VTK三维点集轮廓凸包提取
查看>>
【概率论与数理统计】小结9-3 - 区间估计
查看>>
Golang性能调优入门
查看>>
sqlloader外部表
查看>>
golang笔记——数组与切片
查看>>
屏蔽可忽略的js脚本错误
查看>>