赞
踩
在一个
方法一:设置起动模式
一个Activity有四种启动模式:standard, singleTop, singleTask,
singleInstance。
standard: 标准模式,一调用startActivity()方法就会产生一个新的实例。
singleTop:
如果已经有一个实例位于Activity栈的顶部时,就不产生新的实例,而只是调用Activity中的newInstance()方法。如果不位于栈顶,会产生一个新的实例。
singleTask: 会在一个新的task中产生这个实例,以后每次调用都会使用这个,不会去产生新的实例了。
singleInstance:
这个跟singleTask基本上是一样,只有一个区别:在这个模式下的Activity实例所处的task中,只能有这个activity实例,不能有其他的实例。
这些启动模式可以在功能清单文件中进行设置,中的launchMode属性。
方法二:在intent中加标志
Intent.FLAG_ACTIVITY_REORDER_TO_FRONT这个标志表示:如果这个activity已经启动了,就不产生新的activity,而只是把这个activity实例加到栈顶来就可以了。
代码如下:
Java代码
Intent intent = new Intent(ReorderFour.this,
ReorderTwo.class);
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(intent);
=======================我是华丽的分割线=======================
问题:
操作步骤如下:
1、将启动页的
2、按home键,将
3、再点击启动页对应的程序图标。
4、程序会显示启动页,而没有显示它打开的activity。
安装
但是,从程序从前台切到后台,再切回前台后,为什么它没有显示activity堆栈最顶端的activity呢,而是显示了root页面,也就是启动页呢?
有没有办法可以让launchMode设置成singleTask后,仍然像设置成standard一样,在从后台切换回程序时,显示启动页打开的activity(栈顶的activity)啊?
回复1:
“singleTask” activity allows other activities to be part of its
task. It’s always at the root of its task, but other activities
(necessarily “standard” and “singleTop” activities) can be launched
into that task.
这是文档中的说明,那么既然是只有一个启动页,你从程序从前台切到后台,再切回前台后,相当于还是要启动程序吧?
既然你要启动程序是不是要启动这个唯一的启动页呢?
所以就到了楼主所说的结果。
第二,其实感觉也挺简单的,直接将android:launchMode=”singleInstance”这样就应该可以了。
测试过,能达到楼主要求。
回复2:
1、“那么既然是只有一个启动页,你从程序从前台切到后台,再切回前台后,相当于还是要启动程序吧”。那为什么设置为“standard”的时候,能够显示栈顶的activity呢?
设置为standard的时候,允许有多个启动项, 也就是说, 可以从任意一个activity中启动,具体的请看文档。
2、设置成android:launchMode=”singleInstance”后,这样操作:由启动页打开一个activity,然后按回退键。被打开的activity不见了,但是启动页也不见了,直接显示手机的主界面,应该显示启动页才合理啊。
on the other hand, permits no other activities to be part of its
task. It’s the only activity in the task. If it starts another
activity, that activity is assigned to a different task — as if
FLAG_ACTIVITY_NEW_TASK was in the intent.
文档中是这样说的,你设置成了singleInstance,. It’s the only activity in the
task。
也说了解决的办法,就是你开启acitivty跳转的时候,添加flag FLAG_ACTIVITY_NEW_TASK 即可。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。