繁体   English   中英

Android:finishAffinity()vs finishAndRemoveTask()

[英]Android: finishAffinity() vs finishAndRemoveTask()

TLDR:finishAffinity()和finishAndRemoveTask()之间有什么区别?

我正在开发一个只有一个活动的Android应用程序,并使用片段切换而不是新活动。

即使在清理后台堆栈时,我仍然遇到一个奇怪的问题,即通过背板生活的某个碎片。 长话短说,这个片段是活的,因为我从那个片段开始了一个网络浏览器。

使用流行的按回x2在我的主要活动中退出app技术,它将使用finishAndRemove任务“退出”。 这将返回到某个片段,而不是完全退出。 将后面的x2退出流程从finishAndRemoveTask更改为finishAffinity解决了我的问题。 为什么这样做?

在Android中,所有活动都在任务堆栈中管理。 关联性用于对特定任务堆栈下的活动进行分组。 通常,亲和性指示活动优选或属于哪个任务。 一旦理解了堆栈的工作原理, finishAffinity()finishAndRemoveTask()的含义就非常简单了。

在此输入图像描述

finishAffinity()

完成此活动以及当前任务中具有相同亲缘关系的紧接其下的所有活动。

finishAndRemoveTask()

在您的活动完成后调用此应该关闭,并且应该完成任务作为完成任务的根活动的一部分。

活动的launchMode的一个很好的示范:标准,singleTop,singleTask和singleInstance是可以在这里找到

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM