我有一个LoginActivity(这是主要的活动),在用户登录后,它将他重定向到另一个活动,当他按下后退按钮时,它会返回到登录活动。我试过用 这样:
StartActivity(typeof(FragmentRendererActivity));
Finish();
和此:
StartActivity(new Intent(this, typeof(FragmentRendererActivity)));
Finish();
和此:
Intent intent = new Intent(this, typeof(FragmentRendererActivity));
intent.AddFlags(ActivityFlags.NoHistory);
StartActivity(intent);
和此:
Intent intent = new Intent(this, typeof(FragmentRendererActivity));
intent.AddFlags(ActivityFlags.ClearTop);
intent.AddFlags(ActivityFlags.ClearTask);
intent.AddFlags(ActivityFlags.NewTask);
StartActivity(intent);
Finish();
和此:
<application android:label="Homecheck" android:theme="@android:style/Theme.DeviceDefault.Light.NoActionBar">
<activity android:name="LoginActivity" android:noHistory="true" android:launchMode="singleTask" />
</application>
......但没有任何效果。我能够得到的最接近的是我登录,我转到活动B,按下后退按钮,应用程序退出(暂停状态)。我恢复了,你猜对了,我回到了登录活动。 那么有没有办法正确摆脱后台堆栈中的活动? 附:也许问题是我的LoginActivity是主要的活动?
答案 0 :(得分:2)
如果Login是您的MainActivity,每次应用关闭并打开时,它都将是用户看到的第一个屏幕。使用启动画面可以检查您的用户是否已经过身份验证,并从那里重定向。你谈到的行为是预期的行为
在类的ontop属性中添加NoHistory = true会将其从后栈中删除
[Activity(Label = "SampleApp", NoHistory = true)]
public class LoginActivty : Activity
{
}
您还可以尝试清除热门活动
var intent = new Intent(this, typeof(SampleActivity));
intent.SetFlags(ActivityFlags.ClearTop | ActivityFlags.ClearTask | ActivityFlags.NewTask);
StartActivity(intent);
Finish();