首页 > 其他 > 详细

Activity四种启动模式的利用场景

时间:2014-02-22 07:09:07      阅读:395      评论:0      收藏:0      [点我收藏+]

一.singleTask:

需求说明: 如果自己的客户端处于运行状态,按下Home键后台挂起。此时如果使用微信调起自己的客户端某 个页面,不做任何处理的情况下,按下回退或者当前 Activity.finish(),页面都会停留在自己的客户端(因为自己的Application回 退栈不为空),这明显不符合逻辑的。产品的要求 是,回退必须回到微信客户端,而且要保证不杀死自己的Application.

处理方案: 设置当前 被调起Activity的属性 为:LaunchMode=""SingleTask"  taskAffinity="com.tencent.mm"(com.tencent.mm 是借助于工具找到的微信包名),就是把自己的 Activity放到微信默认的Task栈里面,这样回退时就会遵循“Task只要有Activity一定 从本Task剩余Activity回退"的原 则,不会回到自己的客户端,而且也不会影响自己客户端本来的Activity和Task逻辑。

 

其他:

创 建两个工程application1和application2,分别含有Activity1和Activity2,其taskAffinity相 同,Activity1的allowTaskReparenting为true。首先,我们启动application1,加载Activity1,然后 按Home键,使该task(假设为task1)进入后台。然后启动application2,默认加载Activity2。我们看到了什么现象?没错, 本来应该是显示Activity2,但是我们却看到了Activity1。实际上Activity2也被加载了,只是Activity1重新宿主,所以看 到了Activity1。


我们首先启动APP1的MyActivity,然后按Home键,返回到桌面,然后打开APP2的Activity2,点击Activity2,进入Activity1(Flag被设置成FLAG_ACTIVITY_NEW_TASK,taskAffinity与MyActivity同)。然后按返回键。我们发现,我们进入Activity的顺序为Activity2->Activity1,而返回时顺序为 Activity1->MyActivity。这是因为:启动Activity1时,其会首先检查是否存在与自己taskAffinity相同的Task,如果存在,那么它会直接宿主到该Task中,本例中就宿主到MyActivity的栈中了,如果不存在则重新创建Task。

 

 

Activity四种启动模式的利用场景

原文:http://blog.csdn.net/berber78/article/details/19628153

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!