在安卓中,Intent.FLAG_ACTIVITY_CLEAR_TOP和finish有什么区别?

4
在Android中,Intent.FLAG_ACTIVITY_CLEAR_TOPfinish()有什么区别? Intent.FLAG_ACTIVITY_CLEAR_TOP用于在启动新活动时清除任务栈中的所有旧活动。而finish()用于销毁当前活动并返回上一个活动。
简而言之,Intent.FLAG_ACTIVITY_CLEAR_TOP是清除整个任务栈,而finish()只是销毁当前活动。

你在这两个中看到了任何相似之处吗?第一个是意图标志,而第二个是活动委托。 - Shailendra Singh Rajawat
3个回答

8
这两者的区别如下:
1. finish() 可以用来结束当前所在的活动,也只会一次性结束一个活动。 2. 在使用 FLAG_ACTIVITY_CLEAR_TOP 时,所有在当前栈顶活动上面的活动都会被结束掉。这可能包括多个活动。

1
根据您的解释,我认为您应该删除句子“两者都执行相同的工作”。它暗示了与您答案其余部分相反的意思。其余部分非常有启发性,谢谢。 - Marmoy

3
假设您按A->B->C->D的顺序依次启动活动,即活动B从活动A开始,活动C从活动B开始,以此类推。现在从活动D中使用Intent标志FLAG_ACTIVITY_CLEAR_TOP调用startActivity(A)将完成其间所有活动(这里是B和C),并启动A。
从您的活动中调用Finish()将关闭当前活动。

1

finish() 是 Android 中用于在程序中结束活动的方法。 (注意,您也可以使用 onDestroy())。 FLAG_ACTIVITY_CLEAR_TOP 可以清除 Activity 栈中当前活动顶部的所有活动。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接