java - Android 中的 `finishAffinity();` 和 `finish()` 方法有什么区别?

标签 java android performance android-lifecycle

我在登录屏幕上使用了一些代码,如果用户不想登录,它会强制关闭应用程序。如果用户选择不登录/取消,它会调用代码退出应用程序.我已经通过以下两种方式(不是同时)成功地做到了这一点:

finishAffinity();
 System.exit(0);

finish();
 System.exit(0);

然而,这两行代码似乎做同样的事情...该应用程序对用户关闭,但仍保留在后台应用程序中,如果用户点击“概览”按钮,他们可以选择它重新打开。 (这只是重新启动登录提示。)

由于我没有发现任何功能差异,我想知道 finishAffinity()finish() 方法之间有什么区别?

奖励问题:另外,有没有办法完全关闭该应用程序,使其也不会出现在概览按钮应用程序列表中?

最佳答案

finishAffinity():

关闭当前堆栈中存在的所有 Activity

finish()

只关闭打开的 Activity

Also, is there a way to completely shut down the app, so it also doesn't appear in the overview button app list?

是的,您可以为此目的将 android:noHistory="true" 添加到 Manifest.xml 中的 activities 标签

关于java - Android 中的 `finishAffinity();` 和 `finish()` 方法有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53494605/

相关文章:

java - 从垃圾收集中驱逐非直观的对象

android - 使用 XmlResourceParser 解析内部存储中的 xml 文件

Android:使用 onClick 更改 ListView 行中的按钮背景

javascript - 上传大约 150 张照片后浏览器崩溃

java - Android从末尾读取文本文件

java - 如何从导航组件中的子 fragment 访问父 fragment 的 View

c# - 如何在C#中获取主板传感器读数

excel - 计算机因简单代码而窒息。我错过了什么?

java - 使用 getY() 和 getX() 计算 2 点之间的距离

java - 如何在 Android 上使用拉丁重音字母?