Android IntentCompat makeRestartActivity在2.3中没有任何作用

Alv*_*nte 6 android android-intent android-support-library

我在清除整个活动堆栈和运行新活动时遇到问题.在我的应用程序中,用户可以导航到其配置文件并关闭其会话.屏幕堆栈如下:

StartActivity(自动完成,因此不会保留在堆栈中)> MainActivity> UserProfileActivity

当用户单击"从配置文件注销"时,它应该打开将显示注册屏幕的StartActivity.我们的想法是清除所有活动堆栈,因此用户无法继续注销:

UserProfileActivity> StartActivity(并且堆栈中没有任何其他内容)

我尝试过基于IntentCompat makeRestartActivity的解决方案,该解决方案应该从启动器图标启动时启动所需的活动.它在Android 4. +中完美运行,但它在Android 2.3上无效.代码如下(取自此链接):

Intent intentToBeNewRoot = new Intent(UserProfileActivity.this, StartActivity.class);
ComponentName cn = intentToBeNewRoot.getComponent();
Intent mainIntent = IntentCompat.makeRestartActivityTask(cn);
startActivity(mainIntent);
Run Code Online (Sandbox Code Playgroud)

我在这里看到了另一个解决方案,基本上用一些标志创建一个intent:

Intent intent = new Intent(getApplicationContext(), StartActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_CLEAR_TASK|Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(intent);
finish();
Run Code Online (Sandbox Code Playgroud)

这似乎有效,但在按回StartActivity后,它返回到MainActivity(存在于堆栈中),如果没有登录,它应该是不可用的.

那么,有没有办法清除整个活动堆栈,适用于所有Android版本?