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,或者如果你知道你无论如何都会重新启动它就完成它。
这就是我试图关闭我的应用程序的原因:
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,或者如果你知道你无论如何都会重新启动它就完成它。