安卓怎么样完全退出应用程序程序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了安卓怎么样完全退出应用程序程序相关的知识,希望对你有一定的参考价值。

整个界面就一个activity,调用了System.exit(0);然后 log 显示进程已经死掉了,系统正在运行的程序里面也没有,但是长按HOME 后程序的图标还在任务栏里面显示着,这个如何清理掉啊

“长按home键显示着 ” 并不意味着此程序一定在运行。
这时候显示的是运行过的历史记录,也就是说你看到的只是history列表,并非是正在运行的程序。
当你选择清除某个程序,若程序还在运行,基本上就会被停止(这么说是因为允许有些程序声明清除时后台service可以继续保持),如果是已经停止的程序,那么就是清除一个记录而已。

正在运行的程序列表才是可靠的。追问

因为我的程序只能从其他地方打开,如果我的程序已经退出了,但是任务栏还有缓冲的图标存在,那么用户点击图标进入数据就会有问题,所以就是想程序退出了 任务栏不会显示图标了

追答

那就让程序不要出现在历史记录里面就好了。
你需要在入口的activity配置一个属性,程序就不会出现在历史记录里。
当然,你这里就一个activity,就是入口activity了,在androidManifest.xml的activity节点下配置:
android:excludeFromRecents = "true"
就可以了,不会出现在历史记录里。

顺便说一下,楼上的配置nohistory是不会实现你要的效果的,这个配置是activity不会在堆栈保存,跟程序历史记录是两码事。

参考技术A System.exit(0) 表示的是退出进程。
在切换界面,不需要退出应用进程的,使用这个后会导致当前应用进程先退出,后启动另外一个应用进程开启行的界面。处理比较多所以会出现黑屏刷新的现象。

如果想开启第二个界面后不希望在Home中看到前一个应用界面,可以在该界面的AndroidManifest.xml文件的该activity中设置如下属性

android:noHistory="true"
Specify whether an activity should be kept in its history stack. [boolean]
表示在界面切换时不在堆栈中保存在界面信息。
参考技术B 具体源码是 自己些的返回按钮监听
//返回按钮监听
public boolean onKeyDown(int keyCode,KeyEvent event)
if(keyCode == KeyEvent.KEYCODE_BACK)
Intent intent = new Intent();
intent.setClass(ActivityExchange_AndroidPhone.this, GiftActivity.class);
startActivity(intent);
//System.exit(0); //用了这行代码返回上一级页面 会黑屏刷新

return super.onKeyDown(keyCode, event);
我是说我有2 个 Activity 第二个 Activity页面 用了上面返回的语句。。就返回第一个 Activity页面时,会黑屏刷新 第一个Activity页面

完全退出安卓应用

【中文标题】完全退出安卓应用【英文标题】:Exit completely from android app 【发布时间】:2014-08-19 23:13:44 【问题描述】:

我想通过单击退出按钮退出整个应用程序。实际上我使用的是退出按钮而不是注销。因此,每当用户单击它时,它应该完成整个应用程序,但它只会破坏最后运行的活动。我现在该怎么办? 我在我的代码中使用这种方法,任何帮助将不胜感激,在此先感谢。

         public void exit(View v)
                finish();
                System.exit(0);
            

我也使用了以下代码,但它只会杀死最后运行的活动,而不是完整的应用程序。

             public void exit(View v)
                android.os.Process.killProcess(android.os.Process.myPid());
                System.exit(1);
            

【问题讨论】:

除非您有充分的理由,否则您不应该这样做。它是反安卓的,会惹恼用户并且对性能没有任何帮助。全方位的坏主意。 是的,我有理由这样做 .. 我知道 .. 你是对的,但没有任何事情按照它应该工作的方式工作 :( 【参考方案1】:

还有另一种方法可以完全杀死您的应用。最小化它,Android系统会在必要时自动杀死它。为此,

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

此外,这个 SO 问题可能会有所帮助:How to close android app completely

【讨论】:

thnx.. 更好.. :)【参考方案2】:

如果你真的,真的必须这样做:

public void exit(View v)
    finish();
    android.os.Process.killProcess(android.os.Process.myPid());

【讨论】:

汉斯它带我回到上一个活动..我的意思是它只破坏了一个活动,而不是完整的应用程序:( 啊,现在我明白你想要什么了。即使在您的应用退出后,活动返回堆栈也包含您的旧活动。如果您退出最顶层的活动,甚至终止应用程序,则之前的活动将重新打开。为避免这种情况,您需要实现以下内容:***.com/a/19109602/414285 汉斯它不适合我.. :( 不知道为什么可能有一些问题【参考方案3】:

永远不要在 Android 应用上放置退出按钮。

在这里阅读:

Closing Application with Exit button

【讨论】:

【参考方案4】:

如果最低 sdk 版本为 21 及以上。

finishAndRemoveTask()

因此,即使从任务列表中,应用程序也会完全关闭。

【讨论】:

【参考方案5】:

我认为 Hans Kratz 提出的解决方案不是最好的,因为它可能会导致问题,因为资源不会首先最终确定。相反,您应该使用以下代码安全地终止您的应用程序:

public void exit(View v)
     System.runFinalizersOnExit(true);
     System.exit(0);

但真的要三思而后行,因为这不是 Android 应用程序通常的工作方式。

【讨论】:

是的,我知道,但时间太短了,这就是我考虑这个的原因......这段代码和 Hans 做的一样......只破坏最后一个正在运行的活动......应用程序是仍在运行:( 好的,现在我知道你在找什么了。请查看以下帖子中接受的分析器的解释:***.com/questions/2092951/…

以上是关于安卓怎么样完全退出应用程序程序的主要内容,如果未能解决你的问题,请参考以下文章

android怎样点击两下退出程序

山寨苹果手机怎么一按home键,全部应用就完全退出了?

安卓手机如何查看后台运行程序

安卓手机网页退出不了怎么办

安卓手机后台运行launchlog是啥程序?

安卓系统手机里的应用程序可以自己改名字和更换图标吗