Mr.*_*rew 1 java performance android android-lifecycle
我在登录屏幕上使用了一些代码,如果用户不想登录,则该应用程序会强制关闭应用程序。如果用户选择不登录/取消,则它将调用该代码以退出应用程序。我已经成功完成了这两种方式的操作(不是同时):
finishAffinity();
System.exit(0);
Run Code Online (Sandbox Code Playgroud)
和
finish();
System.exit(0);
Run Code Online (Sandbox Code Playgroud)
然而,这两行代码似乎都在做相同的事情...该应用程序对用户关闭,但如果用户单击“概述”按钮,他们可以选择重新打开该应用程序,但仍保留在后台应用程序中以重新打开。(这只是重新启动提示以登录。)
由于没有发现功能上的差异,因此我想知道finishAffinity()和finish()方法之间的区别是什么?
奖励问题:另外,有没有办法完全关闭该应用程序,因此它也不会出现在概述按钮应用程序列表中?
finishAffinity(): finishAffinity()不用于“ 关闭应用程序 ”。它用于从当前任务中删除多个属于特定应用程序的活动(其中可能包含属于多个应用程序的活动)。
即使您完成了应用程序中的所有“活动”,托管应用程序的OS进程也不会自动消失(就像您在调用时那样System.exit())。Android最终会解决您的问题。您对此没有控制权(这是有意的)。
finish():在调用finish()活动时,将onDestroy()执行该方法,该方法可以执行以下操作:
取消活动正在管理的所有对话框。
关闭活动正在管理的所有游标。
关闭任何打开的搜索对话框。
完成亲和力():
关闭当前堆栈中存在的所有活动
结束()
仅关闭打开的活动
另外,有没有办法完全关闭应用程序,使其也不会出现在概览按钮应用程序列表中?
是的,您可以为此目的添加android:noHistory="true"到您activities tag的Manifest.xml
| 归档时间: |
|
| 查看次数: |
2447 次 |
| 最近记录: |