Android 如何使应用程序完全(干净地)关闭

Android 如何使应用程序完全(干净地)关闭,android,codenameone,Android,Codenameone,我想添加“退出”功能 Display.getInstance().exitApplication()几乎可以工作,但可以离开 在android open applications视图中的“ghost”窗口后面。为什么不完成所有活动和服务,并将其他引用设置为空 如果您有一个应用程序单例,那么就只剩下它了。为什么不完成所有的活动和服务,并将其他引用设置为null 如果你有一个应用程序的话,那就只剩下一个应用程序了。android操作系统上的每个应用程序,就像Linux操作系统中的用户,每个应用程序运

我想添加“退出”功能

Display.getInstance().exitApplication()几乎可以工作,但可以离开

在android open applications视图中的“ghost”窗口后面。

为什么不完成所有
活动
服务
,并将其他引用设置为空


如果您有一个应用程序单例,那么就只剩下它了。

为什么不完成所有的
活动和
服务
,并将其他引用设置为null


如果你有一个应用程序的话,那就只剩下一个应用程序了。

android操作系统上的每个
应用程序
,就像
Linux操作系统中的
用户
,每个应用程序运行在一个
进程
中,该进程分配了一个
进程ID
,而应用程序不知道该进程ID,但如果我们终止进程,整个应用程序就会停止

这是你能做的

 android.os.Process.killProcess(android.os.Process.myPid());
但是这将重新启动
应用程序的第一个
活动
,因为
android
将尝试恢复
应用程序
,您可以像这样转到主屏幕来避免这种情况

Intent  intent = new Intent(Intent.ACTION_MAIN);
            intent.addCategory(Intent.CATEGORY_HOME);
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            startActivity(intent);
            finish();

android操作系统上的每个
应用程序
,就像
Linux操作系统中的一个
用户
,每个应用程序都运行在一个
进程
中,该进程分配了一个
进程ID
,而应用程序不知道,但如果我们杀死该进程,整个应用程序就会停止

这是你能做的

 android.os.Process.killProcess(android.os.Process.myPid());
但是这将重新启动
应用程序的第一个
活动
,因为
android
将尝试恢复
应用程序
,您可以像这样转到主屏幕来避免这种情况

Intent  intent = new Intent(Intent.ACTION_MAIN);
            intent.addCategory(Intent.CATEGORY_HOME);
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            startActivity(intent);
            finish();
是退出应用程序的唯一方法,但不会将其从任务切换程序中删除。感谢@david medenjak的评论,我能够找到以下内容:

android:noHistory="true"
要使用该选项,请使用:

android.xactivity=android:noHistory="true"
在您的构建提示中,该应用程序将不会出现在历史记录中。但正如人们所说,这是一个非常糟糕的做法

iOS中的仅供参考如果您包含退出按钮,您的应用程序将被审查拒绝,除非是“注销”按钮。典型的移动应用程序永远不会真正退出,只应出于安全目的退出

如果你的应用程序需要这些资源,操作系统会杀死它。请注意,这一点很重要,因为移动应用程序通常会停止/重新启动,例如来电。

是退出应用程序的唯一方法,但不会从任务切换程序中删除。感谢@david medenjak的评论,我能够找到以下内容:

android:noHistory="true"
要使用该选项,请使用:

android.xactivity=android:noHistory="true"
在您的构建提示中,该应用程序将不会出现在历史记录中。但正如人们所说,这是一个非常糟糕的做法

iOS中的仅供参考如果您包含退出按钮,您的应用程序将被审查拒绝,除非是“注销”按钮。典型的移动应用程序永远不会真正退出,只应出于安全目的退出


如果你的应用程序需要这些资源,操作系统会杀死它。请注意,这一点很重要,因为移动应用程序通常会停止/重新启动,例如来电。

这不是
“打开的应用程序视图”
,而是
“最近的应用程序视图”
,请参见
意图#标记活动(u排除)最近的
,即使这是可能的:您不应该这样做。android拥有这些观点是有原因的。您可以对不应显示的单个活动使用
NO_HISTORY
标志。它不是
“打开的应用程序视图”
,而是
“最近的应用程序视图”
,请参见
意图#标志活动_从最近的活动中排除
,即使这是可能的:您也不应该这样做。android拥有这些观点是有原因的。您可以对不应显示的单个活动使用
NO_HISTORY
标志。您的建议对于一般android可能是正确的,但似乎与codenameone环境无关。您的建议对于一般android可能是正确的,但与codenameone环境无关。您的建议有何含义“没有历史记录”被认为是不好的?对iPhone很有意思。几周前,我妻子抱怨她的电池似乎用得太快了。结果证明,她运行过的所有应用程序都还在运行。在一次手动屠杀之后,电池变好了。历史上的应用程序不一定“正在运行”“他们可以被完全停职或处死。如果您退出应用程序,它将真正死亡,您在历史中看到的正是“历史”。你会阻止用户轻松返回你的应用程序,这既不方便又奇怪。扼杀iOS手机的是特定应用程序(如Facebook)的后台进程。如果你阻止他们在后台进行位置/更新投票,电池可能会改进。被认为不好的“无历史记录”意味着什么?关于iPhone很有趣。几周前,我妻子抱怨她的电池似乎用得太快了。事实证明,她运行过的每一个应用程序都还在运行。在一次人工屠杀之后,电池变得更好了。历史上的应用程序不一定“运行”,它们可以被完全暂停或关闭。如果您退出应用程序,它将真正死亡,您在历史中看到的正是“历史”。你会阻止用户轻松返回你的应用程序,这既不方便又奇怪。扼杀iOS手机的是特定应用程序(如Facebook)的后台进程。如果您阻止他们在后台轮询位置/更新的能力,电池可能会改进。