如何从上下文之外结束 android 任务/关联?

问题描述

我正在从上下文外部开始一个新活动,因此我需要使用新任务,如下所示:

Intent intent = new Intent(appContext,nextActivity);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
appContext.startActivity(intent);

(这发生在独立的库模块中,因此解决方案并不像“只需将代码移动到活动”那样简单)。

上述意图非常适合开始新活动,问题是在此之前的当前活动仍保留在后台(现在成为任务) .

用户不应该从新任务返回到旧任务,那么我该如何销毁旧任务(以及它包含的一项活动)

我没有在当前/旧活动上使用 nohistory 的选项,因为有两个流程 - 一个让我们转到 新任务,另一个转到旧任务中的其他活动。

使用 FLAG_ACTIVITY_CLEAR_TOP 不起作用,因为这会清除新任务,而不是旧任务。


因为我觉得我一直很困惑,这里粗略地说明了流程是如何发散的:

                                                             -------------
                                                             | something |
                                                             |           |
                                                             |           |
-------------    -------------                          | => | old-task  |
| app start |    | current   |                          |    -------------
|           | => |           | => [Async Library Func] =|
| nohistory |    |           |                          |    -------------
| old-task  |    | old-task  |                          | => | newthing  |
-------------    -------------                               |           |
                                                             |           |
                                                             | new-task  |
                                                             -------------  

如果我们开始newthing,我们如何从异步库函数中取消/销毁/完成旧任务

这可以通过finishAffinity 没有库模块引用当前活动来实现吗?是否有等同于 finishAffinity 的标志?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)