Android: finishAndRemoveTask() 没有关闭应用

Android: finishAndRemoveTask() doesn't close the app

这就是我试图关闭我的应用程序的原因:

import androidx.appcompat.app.AppCompatActivity;
import android.widget.ImageButton;
import android.os.Build;
import android.os.Bundle;
import android.content.Intent;

public class PlayMSActivity extends AppCompatActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        ImageButton exit = findViewById(R.id.msexit);
        ImageButton start = findViewById(R.id.msstart);
        exit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
                    finishAndRemoveTask();
                } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
                    finishAffinity();
                } else {
                    finish();
                }
            }
        });
        start.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v){
                startActivity(new Intent(PlayMSActivity.this, AnotherClass.class));
            }
        });
    }
}

我的代码来自另一个类:

import androidx.appcompat.app.AppCompatActivity;
import android.widget.ImageButton;
import android.os.Build;
import android.os.Bundle;
import android.content.Intent;

public class AnotherClass extends AppCompatActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        ImageButton ret = findViewById(R.id.ret1);
        ret.setOnClickListener(new View.OnClickListener(){
            startActivity(new Intent(AnotherClass.this, PlayMSActivity.class));
            finish();
        });
    }
}

由此产生的行为:应用程序短暂闪烁,但几毫秒后又重新出现。 有时,它会按预期关闭,但只有每 ~7 次尝试才会关闭。我正在测试的设备是安装了最新 API 的选项卡 A。这同样适用于使用 SDK 版本 Q.

模拟选项卡的测试

这是为什么以及如何解决?

所以我想出了我的问题所在。 我开始了新的活动,但没有完成这个。每次我在 start.setOnClickListener 部分开始一个新的 Activity 之后,我只需要添加一个 finish();,就像这样:

startActivity(new Intent(PlayMSActivity.this, AnotherClass.class));
finish();

还有其他解决方案,但这表明我的问题出在哪里:我从其他活动开始 activity,但一开始并没有完成。所以这个class有几个未完成的Activity实例,导致不得不一一关闭。

给其他人的提示:不要开始一个你已经 运行 的 activity,或者如果你知道你无论如何都会重新启动它就完成它。