【问题标题】:way to exit from the app in android在android中退出应用程序的方法
【发布时间】:2015-08-07 17:54:33
【问题描述】:

我有一个 HomeActivity(用于在 3 秒内显示初始屏幕),然后自动重定向到 LoginActivity(用于检查用户信息以进行登录)。 在 LoginActivity 我有一个退出按钮用于退出应用程序,代码如下

        // TODO Auto-generated method stub
         finish();
         android.os.Process.killProcess(android.os.Process.  myPid());
         System.exit(0);

我再次在 onDestroy() 中使用了相同的代码。 但是,当我尝试退出应用程序时,程序已被牢牢关闭。但仍保留在内存中(在后台应用程序列表中)。我该如何解决?

【问题讨论】:

  • Android 杀死自己的进程,自己杀死进程不是一个好习惯。 finish() 是退出活动的最佳方式
  • 好的,我使用了 Finish();单独,不起作用。我将 Finish() 与 System.exit(0) 一起使用,但不起作用。我试了很多方法,都没有回答。
  • finish() 完成一个activity,如果你的app包含多个activity,你需要全部关闭

标签: android


【解决方案1】:

打电话不是个好主意:

android.os.Process.killProcess(android.os.Process.myPid());
System.exit(0);

因为 android 会自动处理进程。 同时从最近排除您的应用是不正确的行为。

顺便说一句,您可以在清单中的“退出”活动标签下放置:

android:excludeFromRecents="true" 

并且在关闭应用时不会出现在最近的应用中

编辑

如果它在 Android 5.0 中不起作用,那是一个报告的错误,所以添加 taskAffinity 属性并使用 autoRemoveFromRecents:

android:taskAffinity=".YourExitActivity"
android:autoRemoveFromRecents="true"

然后在您的onPause() 中您可以检查sdk 版本以使用finishAndRemoveTask

if(android.os.Build.VERSION.SDK_INT >= 21) {
    finishAndRemoveTask();
} else {
    finish();
}

【讨论】:

  • 对不起,你的想法不起作用。我的问题仍然存在。
  • 谢谢,我的问题解决了。我在第一个活动标签(在清单中)中使用了 'android:excludeFromRecents="true" '。
  • 对不起,我的声望低于15。
【解决方案2】:

finish() 就足够了。

如果调用finish()后应用仍然在内存中,则可能是你的应用内存泄漏。

【讨论】:

    【解决方案3】:

    在清单中提到标签时,我们可以保留

     `android:`noHistory=true
    

    所以提到的活动不会在后台堆栈中。

    例如:

    <activity
                android:name="Splash_Activity"
                android:label="Splash"
                android:noHistory="true" />
    

    您只需拨打finish() 即可关闭活动。

    【讨论】:

      猜你喜欢
      • 2012-03-20
      • 2014-11-29
      • 2012-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多