我用了一些代码来显示屏幕,如果用户不想登录的话,它会迫使应用程序关闭。如果用户选择不登录/取消,它会调用代码退出应用程序。我已经成功地用以下两种方法(不是同时)完成了这两项工作:
finishAffinity();
System.exit(0);
和
finish();
System.exit(0);
但这两行代码似乎都在做同样的事情.该应用程序对用户关闭,但如果用户按下“概览”按钮,他们可以选择它重新打开,则该应用程序仍将在后台应用程序中重新打开。(它只是重新启动要登录的提示。)
由于我没有注意到功能上的差异,所以我想知道finishAffinity()
和finish()
方法之间有什么区别?
的额外问题:也有办法完全关闭应用程序,所以它也不会出现在概述按钮应用程序列表中吗?
发布于 2018-11-27 07:28:35
finishAffinity():finishAffinity()
不用于“关机应用程序”。它用于从当前任务(可能包含属于多个应用程序的活动)中移除属于特定应用程序的许多活动。
即使您完成了应用程序中的所有活动,承载应用程序的OS进程也不会自动消失(就像调用System.exit()
时一样)。Android最终会杀死你的进程,当它开始的时候。你无法控制这件事(这是故意的)。
finish():当在活动中调用finish()
时,执行方法onDestroy()
可以这样做:
发布于 2018-11-27 07:27:44
finishAffinity():
关闭当前堆栈中的所有活动。
完成()
关闭仅打开的活动
另外,有没有办法完全关闭应用程序,所以它也不会出现在概述按钮应用程序列表?
是的,您可以将android:noHistory="true"
添加到您的Manifest.xml
中的Manifest.xml
中。
发布于 2018-11-27 07:31:01
finishAndRemoveTask()方法弹出堆栈中的所有活动,并从最近的任务列表中删除应用程序--简单地完成当前活动--以及当前任务中与当前任务具有相同亲缘关系的所有活动, finish ()方法从堆栈中弹出当前活动。关于详细文档链接
finishAffinity():完成当前活动以及当前任务中所有具有相同亲缘关系的活动。当您的活动完成并应该关闭时,finishAndRemoveTask():调用它,并且作为完成任务根活动的一部分,任务应该被完全删除。
https://stackoverflow.com/questions/53494605
复制相似问题