taskAffinity的使用

作者: 果果_Zhen | 来源:发表于2020-06-29 21:00 被阅读0次

            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 添加到当前启动的任务栈中。

    相关文章

      网友评论

        本文标题:taskAffinity的使用

        本文链接:https://www.haomeiwen.com/subject/iwcafktx.html