Android Community

taskAffinity的使用

2020-06-29  本文已影响0人  果果_Zhen

        taskAffinity 是 Application 和 Activity 的属性。 Activity 的 taskAffinity ,默认为 Application 的 taskAffinity ,默认是包名。

        那么,taskAffinity 会默认使 Activity 在新的栈中分配吗?

        答案是:不会!!!

        因此,如果希望 Activity 在新的栈中分配,还是要使用启动模式(launchMode 属性)。

可以使用以下命令查看所有存活中的 Activity 信息

        adb shell dumpsys activity activities

使用场景

        那taskAffinity到底有什么用呢?有这样的场景:

        外卖APP下单 -> 跳转到支付APP -> 支付成功页面 -> 点击HOME键

        此时再次打开外卖APP支付APP,哪个APP会出现支付成功页面呢?没错,是在支付APP里。那是怎么实现呢?

        taskAffinity + allowTaskReparenting 的使用。上述例子中,并且支付成功页面的 allowTaskReparenting 设置为 true ,支付APP支付成功页面的 taskAffinity 相同,就可以了。

        allowTaskReparenting 赋予 Activity 在各个 Task 中间转移的特性。一个在后台任务栈中的 Activity A,当有其他任务进入前台,并且 taskAffinity 与 A 相同,则会自动将 A 添加到当前启动的任务栈中。

上一篇下一篇

猜你喜欢

热点阅读