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版本?
| 归档时间: |
|
| 查看次数: |
622 次 |
| 最近记录: |