Android的Activity一共有4中启动模式分别是:standard、singleTop、singleTask、singleInstance。
在介绍这四种模式之前先说下Android中的任务栈(TaskStack)的概念:栈大家都知道,是一种后进先出的数据结构。什么是后进先出呢:
下图模拟Android程序界面:
这是MainActivity(TextView) |
启动MainActivity(Button1) |
启动SecondActivity(Button2) |
这是SecondActivity(TextView) |
启动MainActivity(Button1) |
启动SecondActivity (Button2) |
下图模拟任务栈。
当Android程序启动的时候,MainActivity最先出现,所以任务栈中它是第一个如:任务栈图一
任务栈图一
Main ① |
当点击了【MainActivity程序界面模拟】中的【启动MainActivity(Button1)】的时候,MainActivity再次出现在了任务栈中如:任务栈图二
任务栈图二
Main ② |
Main ① |
当点击了【MainActivity程序界面模拟】中的【启动SecondActivity (Button2)】的时候,SecondActivity出现在了任务栈中如:任务栈图三
任务栈图三
Second ③ |
Main ② |
Main ① |
任务栈中SecondActivity是最后进入的,所以显示在界面上的也是它,当我们点击返回键的时候,也是它最先被销毁。(后进先出)如:任务栈图四
任务栈图四
Main ② |
Main ① |
当然再次点击返回键,任务栈中的MainActivity也被一一销毁,直到退出应用程序,返回到主屏幕。如:任务栈图五
任务栈图五
|
任务栈已经讲完了,同时这也是Activity种的standard模式。
接下来开始说下其他三种模式
singleTop
这是MainActivity(TextView) |
启动MainActivity(Button1) |
启动SecondActivity(Button2) |
这是SecondActivity(TextView) |
启动MainActivity(Button1) |
启动SecondActivity (Button2) |
任务栈图六
Main ① |
任务栈图七
Second ② |
Main ① |
任务栈图八
Main ③ |
Second ② |
Main ① |
Second ④ |
Main ③ |
Second ② |
Main ① |
singleTask
这是MainActivity(TextView) |
启动MainActivity(Button1) |
启动SecondActivity(Button2) |
这是SecondActivity(TextView) |
启动MainActivity(Button1) |
启动SecondActivity (Button2) |
任务栈图十
Main ① |
任务栈图十一
Second② |
Main ① |
任务栈图十二
Main ③ |
Second② |
Main ① |
Main④ |
Main ③ |
Second ② |
Main ① |
Second ② |
Main ① |
Main① |
是不是和你想的一样呢,返回到了MainActivity界面,再次点击返回键则退出应用程序。这就是 singleTask
singleInstance
这是MainActivity(TextView) |
启动MainActivity(Button1) |
启动SecondActivity(Button2) |
这是SecondActivity(TextView) |
启动MainActivity(Button1) |
启动SecondActivity (Button2) |
任务栈图十六
Main ① |
任务栈图十七
Main② |
Main ① |
新任务栈 | 原任务栈 |
Main② | |
Second① | Main① |
新任务栈 | 原任务栈 |
Main③ | |
Main② | |
Second① | Main① |
新任务栈 | 原任务栈 |
Main④ | |
Main③ | |
Main② | |
Second | Main① |
新任务栈 | |
Second |