问题描述
我正在从上下文外部开始一个新活动,因此我需要使用新任务,如下所示:
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 (将#修改为@)