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