基本上我的应用程序有一个loginScreen,一旦登录你就可以进行很多活动。当我按下主页按钮时,应用程序进入后台,如果用户在一定时间内没有打开它,则会关闭用户会话并返回loginScreen。现在的问题是,如果我想在会话过期后从loginScreen关闭应用程序,请按后退键,它应该关闭,但它不会。它将我带到堆栈中的前一个元素。
有线的东西是所有的onBackPressed()方法,当我开始新的意图时,我总是使用intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
并在loginScreen onBackPressed()上调用finish()
但它不起作用。谁知道为什么?以及如何解决这个问题。
感谢您的帮助!!!
代码段 在很多活动中:
@Override
public void onBackPressed() {
mpButtonClick.start();
Intent intent = new Intent(this, MenuPagina.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
super.onBackPressed();
}
登录活动中的:
@Override
public void onBackPressed() {
super.onBackPressed();
getIntent().setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
LoginActivity.this.finish();
}
答案 0 :(得分:4)
你可以这两种方式:
android.os.Process.killProcess(android.os.Process.myPid());
杀死应用。为此,您需要在清单上添加以下权限。
<uses-permission
android:name="android.permission.KILL_BACKGROUND_PROCESSES" />
2。使用静态布尔'isKill'变量,默认为false,每次在登录活动oncreate()方法中设置为false。
在登录活动onBackPress()方法中设置isKill值为true。
然后在每个活动onResume()方法
中写下面的代码if(isKill)
{
finish();
}
答案 1 :(得分:0)
当我开始一项我不想被包含在BackStack中的活动时,我使用:
myintent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
我已经读过(在这里某处)onBackPressed()没有调用,而是使用了onKeyPressed并指定了后退按钮。我会看看能否找到这个例子。
答案 2 :(得分:0)
@Override
public void onBackPressed() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Exit");
builder.setMessage("Do you want to exit? ");
builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
// do something when the button is pressed
public void onClick(DialogInterface arg0, int arg1) {
finish();
**YourActivityName**.super.finishAffinity();
}
})
.setNegativeButton("No", new DialogInterface.OnClickListener() {
// do something when the button is pressed
public void onClick(DialogInterface arg0, int arg1) {
}
}).show();
}