Android:finishAndRemoveTask()不会关闭应用程序

时间:2020-01-05 14:56:26

标签: java android exit

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

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));
            }
        });
    }
}

来自AnotherClass的代码:

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的TabA。相同的情况也适用于带有Q版本SDK的仿真选项卡上的测试。

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

1 个答案:

答案 0 :(得分:1)

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

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

还有其他解决方案,但这显示了我的问题所在:我从其他活动开始了此活动,但没有首先完成它。因此,该类有几个未完成的Activity实例,导致不得不逐个关闭它们。

为其他人提示:不要启动您已经在运行的活动,或者如果知道仍然要重新启动它,则不要结束它。

相关问题