gpt4 book ai didi

android - 完成后如何从最近的任务中删除具有 taskAffinity 的 singleTask Activity ?

转载 作者:塔克拉玛干 更新时间:2023-11-02 18:58:46 27 4
gpt4 key购买 nike

假设我们有两个 Activity 。

A - 主要 Activity ,即“启用主页启动器”(适当的 Intent 过滤器等)

B - 具有 singleTask 规范(此 Activity 只能有一个实例)和自定义 taskAffinity(以区分是否与主任务根)的任务根 Activity 。

假设 B 代表一项任务,该任务仅在未完成时才有效 - 返回它或在完成它后从最近的任务重新开始它不是一种选择。

在某个时间点 - A 启动 B 以开始一项新任务。目标是在用户完成 B 时从最近的任务列表中删除 B。用户可以从 B 导航到其他任务(使用主页长按),然后只要未完成就导航回 B。从启动器启动 A 不会将 B 带到前台,因为它们具有不同的任务相关性。

Android 将 B 识别为任务的根,因此即使 B 已完成,它在最近的任务列表中也是可见的,并且用户可以随时返回到它。将 B 移动到与 A 一起执行的任务不是解决方案,因为在 B 运行时 - 用户应该能够在 A 和 B 任务之间切换。将 excludeFromRecents 添加到 B 的 list 中会将其从最近的任务列表中完全删除,这也是一个糟糕的解决方案。

如何实现? (抱歉我的英语不好)

最佳答案

标准答案

很抱歉带来坏消息,但如果不覆盖应用程序的工作方式,则无法使用标准方法实现此功能。即使那样,它也只会在您的应用程序运行时有效。此外,这样做将需要具有专用 ROM 的 root 设备,因为无论如何您都无法覆盖主页按钮的功能。您所能做的就是响应 onNewIntent(),如果您长按主页按钮,它不会触发。

Recent Tasks 专为方便用户使用而设计,让他们可以返回到他们一直在使用的任何应用程序,无论该应用程序是否正在运行。不过,有个好消息。这个过程不会让你的应用程序保持活力!它只是一个指向您的包裹的图标。

不幸的是,这意味着如果您的应用仍在运行,则表明有其他因素正在使其保持运行。

非标准答案

这可能通过在运行时编辑包属性来实现(与您可以从 Java 代码启用/禁用组件的方式非常相似)。这是非常不鼓励的,因为最近的任务是 Android 核心平台的可用性功能。这需要一些研究。

关于android - 完成后如何从最近的任务中删除具有 taskAffinity 的 singleTask Activity ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10920887/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com