标签:
??在做来往分享的时候,遇到了一个奇葩的问题。
??我们的app(Foo)由一个LauncherActivity(L)启动,L在使用ApplicationContext启动MainActivity(M)之后finish自己。Scheme也统一由L接收,并转发至M。其中,M是singleTask的。
??当通过Foo分享到来往之后,点击通过Scheme启动Foo,此时会出现L的闪屏页,但是不会留在M。点开Foo,发现已经打开了Scheme相应的页面。
初始栈状态:
来往(TOP) | Foo |
---|---|
来往Main | M |
??这个诡异的问题是由于使用的Context有问题。
来往(TOP) | Foo |
---|---|
L | 空 |
来往Main | M |
- L随即启动M,M由于是singleTask的,所以会将之前已经启动的Foo的Task中的M调起,但是,由于使用的是ApplicationContext,所以Foo的Task没有被拉起,仍然在来往的Task之下
来往(TOP) | Foo |
---|---|
L | 空 |
来往Main | M |
- L finish自己,来往发起Scheme的页面恢复展示
来往(TOP) | Foo |
---|---|
来往Main | M |
??解决方法是,把L也设置成singleTask的。
来往 | Foo(TOP) |
---|---|
空 | L |
来往Main | M |
- L随即启动M,M是singleTask的,此时,由于有了一个Foo Task在最顶端,会新建一个M并放到L之上
来往 | Foo(TOP) |
---|---|
来往Main | M |
- L finish自己,此时Foo的Task在来往之上
来往 | Foo(TOP) |
---|---|
来往Main | M |
??在L上设置taskAffinity是不能解决这个问题的。
??由于把一个App的入口Activity设为SingleTask的,进行如下行为时:
1. Home切换台
2. 点击Launcher上的icon进入App
App的Task会被清空,所有行为不符合Android的用户习惯。所以,最后解决方法是:
??关于singleTask的好文章
??关于singleTask的官方说明摘要如下:
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:
原文地址:http://blog.csdn.net/pouloghost/article/details/46973291