Android: finishAndRemoveTask () не закрывает приложение - PullRequest
0 голосов
/ 05 января 2020

Итак, вот что я пытался закрыть свое приложение:

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-й попытки. Устройство, на котором я тестирую это Tab A с установленным новейшим API. То же самое относится к тестам на эмулированной вкладке с SDK версии Q.

Почему это и как это исправить?

1 Ответ

1 голос
/ 05 января 2020

Итак, я понял, в чём была моя проблема. Я начал новую деятельность, но не закончил sh эту. Мне просто нужно было добавить finish(); после каждого запуска новой операции в части start.setOnClickListener, например:

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

Есть и другие решения, но это показывает, где моя проблема была : Я начал эту деятельность с других занятий, но сначала не остановил sh. Таким образом, было несколько незаконченных экземпляров Activity этого класса, в результате чего их пришлось закрывать по одному.

Совет для других: не запускайте действие, которое вы уже выполняете, или прекратите его, если вы знаете, что все равно перезапустите его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...