当用户按下后面的底部时,我需要删除所有已打开活动的堆栈:
@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);
}
重点是这与我的大多数手机一起使用,但昨天我尝试使用三星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();
}
我也试过了:
@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();
}
答案 0 :(得分:3)
一个简单的修复应该是将xml属性android:noHistory="true"
添加到您的所有活动中,这意味着只要用户离开该Activity,它就会消失,并且不会存储后备堆栈
答案 1 :(得分: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();
答案 2 :(得分:0)
您可以使用IntentCompat.FLAG_ACTIVITY_CLEAR_TASK
并从支持库导入import android.support.v4.content.IntentCompat;
来处理API 10。
答案 3 :(得分:0)
如果你在Intent' i'中添加addFlags您的意图ACTION_SEND将无效,但如果在响应createChooser()中添加addFlags,则只创建一个ACTION_SEND实例。
if (i == null) i = new Intent();
i.setAction(Intent.ACTION_SEND);
i.putExtra(Intent.EXTRA_STREAM, getImageUri());
i.setType(Constantes.IMAGE_STREAM);
startActivity(Intent.createChooser(i, messageShare).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK));
答案 4 :(得分:-1)
尝试添加这些标志:
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); //use this if you want to clear the stack
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); // use this if you don't want to clear your home activity
这应该清除堆栈中的所有活动,除了这个被带到前面的活动。
您不应该使用finish();