Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK无法使用Android

zap*_*tec 7 android

好吧,那就是我的问题.

当用户按下后面的底部时,我需要删除所有已打开活动的堆栈:

@Override
public void onBackPressed(){
    Intent i = new Intent(context, CrisolMainApp.class);
    i.putExtra(CrisolMainApp.CERRAR_APP, true);
    i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK|Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(i);
}
Run Code Online (Sandbox Code Playgroud)

关键是这与我的大多数手机一起使用,但昨天我尝试使用三星Galaxy Mini(android 2.3.3)并且它无法正常工作!它不会删除一堆活动.

谁知道为什么?

编辑:我正在检查doc,我发现在API 11上添加了"Intent.FLAG_ACTIVITY_CLEAR_TASK"(我的三星Galaxy Mini适用于Android 2.3.3,因此,API 10).......我不知道,但我想这就是问题所在.

任何人都知道如何使API低于11的工作方式相同?

我试图添加这些标志,它也没有工作:

@Override
public void onBackPressed(){
    Intent a = new Intent(this, CrisolMainApp.class);
    a.putExtra(CrisolMainApp.CERRAR_APP, true);
    a.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK|Intent.FLAG_ACTIVITY_NEW_TASK);
    a.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    a.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
    startActivity(a);
    finish();
}
Run Code Online (Sandbox Code Playgroud)

我也尝试过:

@Override
    public void onBackPressed(){
        Intent a = new Intent(this, CrisolMainApp.class);
        a.putExtra(CrisolMainApp.CERRAR_APP, true);
        a.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        a.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
        startActivity(a);
        finish();
    }
Run Code Online (Sandbox Code Playgroud)

Lea*_*ros 1

您没有完成该活动。

Intent i = new Intent(context, CrisolMainApp.class);
i.putExtra(CrisolMainApp.CERRAR_APP, true);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK|Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(i);
finish();
Run Code Online (Sandbox Code Playgroud)

  • 使用 IntentCompat 代替 Intent。FLAG_ACTIVITY_CLEAR_TASK 仅适用于 API 级别 >11 (5认同)