@迷途d书童 你好,想跟你请教个问题:
MainActivity的launchMode = SindleTask。 当应用由MainActivity跳转到DetailActivity后, 按下Home,这时重新点击应用图标启动应用。默认会跳到MainActivity,这时我需要自动跳转到DetailActivity,有一个方案是将 MainActivity的launchMode=standard ,但这样MainActivity每次都会重新启动,不是我想要的。那程序再次启动跳到DetailActivity是怎么写的?
我看了OSChina客户端,这个问题实现了,但是一直没找到解决这个问题的配置或者代码写在那个地方的? 请求help。
好吧,我发现这个问题是怎么回事了。我总结一下:
1.MainActivity如果是SingleTask的话,就算按下Home时最后如果是DetailActivity。则重新启动应用会跑到MainActivity。这是我上面出现问题的情况。
2.如果MainActivity如果是Standard或者SingleTop,并且按下Home时最后如果是DetailActivity。重新启动应用会跑到DetailActivity。
我的应用欢迎页和MainActivity是一个Activity。模式为SingleTask,就出现了上面的问题。OSChina客户端的MainActivity是欢迎Activity,模式为Standerd,则能重新启动能保留DetailActivity。如果OSChina客户端的MainActivity是SingleTask模式,也会出现这样的情况。
我分析了一下原因,应该是应用启动过程中,会先判定应用的MainActivity是什么模式,如果是SingleTask,则会清理其Task顶部的所有Activity.这就是我的DetailActivity,重启后会被destroy掉,丢失的原因。然后才显示这个MainActivity所在的Task。
如果是长按Home键,在历史应用中选择我们的应用,就不会出现destroy掉DetailActivity这样的情况,它们的代码逻辑还是不一样的。
@迷失d书童 @hellsnow @michaely
@迷途d书童
把 DetailActivity的launchMode 也设置为SindleTask就好了,但是退出这个DetailActivity注意及时关掉(finish)。
引用来自“michaely”的答案
@迷途d书童
把 DetailActivity的launchMode 也设置为SindleTask就好了,但是退出这个DetailActivity注意及时关掉(finish)。
的确不需要做配置(所有的Activity都不做launchMode配置,默认就行), 系统会自动判断 。 如果应用的入口Activity是MainActivity,并且配置MainActivity的launchMode = SindleTask,那么通过home键启动时,每次都会从 MainActivity启动。