退出应用程序会完全保留后台活动 - 如何完全退出?

时间:2018-05-24 18:19:45

标签: android android-layout android-activity

我希望我的应用程序完全退出,即使是从后台退出。

首先,快速解释我的应用程序:

我有以下活动:

启动器 - >主要 - > A - > B - > ç

当我打开应用程序时,我会关闭启动器,检查我是否已登录(通常是这种情况,答案是肯定的,我已登录),完成() - >移至主屏幕,(主要回答问题) - >移到A(..) - >转移到B(...) - >转到C

不使用Main,A,B和C之间的任何光洁度。

在C中我有退出按钮,我希望它完全退出应用程序。

这是我的代码:

发射器:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    checkIfUserLoggedIn();
    //some other code
}

private void checkIfUserLoggedIn() {
    String codeStr = DatabaseMgr.getPreferences(getString(R.string.savedCode), this);
    if (codeStr != null && !codeStr.isEmpty()) {
        moveToMainScreen();
    }
}

private void moveToMainScreen() {
    Intent intent = new Intent(MainActivity.this, MainScreen.class);
    startActivity(intent);
    finish();
} 
来自Main的

- > A - > B - > C ==>相同的代码:

Intent intent = new Intent(<ACT>.this, <Next ACT>.class);
            startActivity(intent);

按C键退出:

Intent intent = new Intent(getApplicationContext(), MainScreen.class);
            intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            intent.putExtra("EXIT", true);
            startActivity(intent);

MainScreen活动:

if (getIntent().getBooleanExtra("EXIT", false)) {
        //1- this.finishAffinity();
        //2- finish()
        //3- Intent i = new Intent();
        //i.setAction(Intent.ACTION_MAIN);
        //i.addCategory(Intent.CATEGORY_HOME);
        //ListActivity.this.startActivity(i); 
        //finish();   

        //4- android.os.Process.killProcess(android.os.Process.myPid());
        return;
    }

以上所有尝试都是通过电话告诉我的:

background

我做错了什么?

有没有其他方法可以完全退出应用程序?甚至没有保留在附图中?

非常感谢!

2 个答案:

答案 0 :(得分:2)

看起来好像是在询问如何防止您的应用出现在&#34;最近使用的&#34;应用

在这种情况下,您可以向应用清单添加属性。我只是尝试将此属性添加到&#34; MainActivity&#34;在我的应用程序中,它工作:

android:excludeFromRecents="true"

我不知道你是否必须在清单文件中添加它或所有Activity条目,但是从我的测试中将它放入&#34; MainActivity&#34;。

或者,您可以尝试添加标记:

FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS

到你的意图。

答案 1 :(得分:0)

编辑:

如果您的API级别> = 21,您可以致电finishAndRemoveTask();完全清除它。

旧答案:

  

尝试使用:

android.os.Process.killProcess(android.os.Process.myPid());
     在此代码之前

Intent i = new Intent(Intent.ACTION_MAIN);
i.addCategory(Intent.CATEGORY_HOME);
startActivity(i);