taskAffinity的使用

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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容