Nothing

Activity启动模式

2024/10/19

Activity启动模式:

1.默认启动模式standard:

该模式可以被设定,不在manifest设定时候,Activity的默认模式就是standard。在该模式下,启动的Activity会依照启动顺序被依次压入Task中:

2f936ad41bc09220d039f923dd2ad4d9

2.栈顶复用模式singleTop:

在该模式下,如果栈顶Activity为我们要新建的Activity(目标Activity),那么就不会重复创建新的Activity。

例:b6706aedf5cad720c966afefd2eab41d

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
<?xml version="1.0" encoding="utf-8"?>



<manifest xmlns:android="http://schemas.android.com/apk/res/android"



package="zy.pers.activitytext">







<application



android:allowBackup="true"



android:icon="@mipmap/ic_launcher"



android:label="@string/app_name"



android:roundIcon="@mipmap/ic_launcher_round"



android:supportsRtl="true"



android:taskAffinity="gf.zy"



android:theme="@style/AppTheme">



<activity android:name=".MainActivity">



<intent-filter>



<action android:name="android.intent.action.MAIN" />







<category android:name="android.intent.category.LAUNCHER" />



</intent-filter>



</activity>



<activity android:name=".TwoActivity"



android:launchMode="singleTop">



<intent-filter>



<action android:name="ONETEXT_TWOACTIVITY" />



<category android:name="android.intent.category.DEFAULT" />



</intent-filter>



</activity>



<activity android:name=".ThreeActivity">



<intent-filter>



<action android:name="ONETEXT_THREEACTIVITY" />



<category android:name="android.intent.category.DEFAULT" />



</intent-filter>



</activity>



</application>







</manifest>

这是第一个应用OneText的Mainfest结构,里面创建了三个Activity,我们把第二个Activity的模式设置为singleTop。

每个Activity界面都只有一个显示当前界面名称的TextView和一个用来组跳转的Button,所以应用OneText的功能就是从活动1跳转到活动2,活动2继续跳转活动2

3.栈内复用模式singleTask:

与singleTop模式相似,只不过singleTop模式是只是针对栈顶的元素,而singleTask模式下,如果task栈内存在目标Activity实例,则:

  1. 将task内的对应Activity实例之上的所有Activity弹出栈。
  2. 将对应Activity置于栈顶,获得焦点。

dcbcdc562715543f5b662f0aabe85a96

4.全局唯一模式singleInstance:

在该模式下,我们会为目标Activity分配一个新的affinity,并创建一个新的Task栈,将目标Activity放入新的Task,并让目标Activity获得焦点。新的Task有且只有这一个Activity实例。 如果已经创建过目标Activity实例,则不会创建新的Task,而是将以前创建过的Activity唤醒(对应Task设为Foreground状态)

cfc84f433fbcb2b3f430027ff92b8795

3966c3f42254480a29ed8419b0d34496

CATALOG
  1. 1. Activity启动模式:
    1. 1.0.0.1. 1.默认启动模式standard:
    2. 1.0.0.2. 2.栈顶复用模式singleTop:
    3. 1.0.0.3. 3.栈内复用模式singleTask: