Android 新建activity的intent 的flag

来源:互联网 发布:linux切换到指定目录 编辑:程序博客网 时间:2024/05/22 10:50

如果在两个activity 之间 可以直接跳转并且可以相应返回键。那么,当两者多次相互跳转之后,再相应返回键,那么结果就是两个activity交替出现。

但,实际上,你想要的效果是,俩个activity退出而已,怎么会出现那么多次。

原因是intent 的flag

这篇文章里有解释

http://www.eoeandroid.com/thread-263361-1-1.html

Activity栈来管理Activity的东西,其实这个东西就是task,task以栈先进后出的管理方式来管理其中的Activity。每当一个程序启动的时候,android系统就会为这个程序创建一个task来管理这个程序用到的activity

一个程序启动后系统会为这个程序分配一个task供其使用,另外同一个task里面可以拥有不同应用程序的activity。那么,同一个程序能不能拥有多个task?这就涉及到加载activity的四种模式:standard、singleTop、singleTask、singleInstance。可以在AndroidManifest.xml中activity标签的属性launchMode中设置该activity的加载模式。简述下这四种模式的区别:
1、standard模式:默认的模式,以这种模式加载必定会构造一个新的Activity实例放到目标task中的activity栈顶,不管当前task的栈顶是什么情况。
2、singleTop模式:这种模式与standard模式类似,区别在于加载activity会多个判断步骤。判断需要加载的新activity与当前task栈顶的activity是不是同一个,相同的话就不再构造新的activity,并调用这个activity的newInstance()方法,不相同就还是会构造新的activity放到栈顶。
3、singleTask模式:这种模式下,会创建一个新的task来加载这个activity,并且这个task中只允许存在一个Activity的一个实例(以后可以加载其他activity的实例)。
4、singleTask模式:这种模式下,会创建一个新的task,并且这个task中只能存在一个需要加载的这个Activity实例,即除了这个activity之外,不允许其他activity。
从这四种Activity的加载模式中大概可以看出同一个程序可以拥有多个task。

=====

如果想跳转之后,不在保存前面那个activity,那就finish就可以了。

0 0