当前位置: 代码迷 >> Android >> android:launchMode设置成singleTask时的一个有关问题
  详细解决方案

android:launchMode设置成singleTask时的一个有关问题

热度:30   发布时间:2016-05-01 21:15:49.0
android:launchMode设置成singleTask时的一个问题
操作步骤如下:

1、将启动页的android:launchMode设置成singleTask后,从启动页打开一个activity。

2、按home键,将手机屏幕切到主界面。

3、再点击启动页对应的程序图标。


4、程序会显示启动页,而没有显示它打开的activity。


安装文档中描述的launchMode设置成singleTask后,程序只会创建唯一一个启动页,并且所有由启动页打开的activity都会在这个Task中。这正是我想要的效果。

但是,从程序从前台切到后台,再切回前台后,为什么它没有显示activity堆栈最顶端的activity呢,而是显示了root页面,也就是启动页呢?

有没有办法可以让launchMode设置成singleTask后,仍然像设置成standard一样,在从后台切换回程序时,显示启动页打开的activity(栈顶的activity)啊?



望大侠帮忙!!!

------解决方案--------------------
CSS code
不懂,给你顶上去然后学习
------解决方案--------------------
"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"这样就应该可以了。
测试过,能达到楼主要求。
------解决方案--------------------
当时也学过这部分,可是没想到这么深奥
------解决方案--------------------
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 即可。
  相关解决方案