Xamarin - Back堆栈不清除

本文关键字:清除 堆栈 Back Xamarin | 更新日期: 2023-09-27 18:02:09

我有一个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);

和this:

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,我按下后退按钮,应用程序退出(暂停状态)。我恢复它,你猜对了,我回到了登录活动。那么,是否有一种方法可以正确地摆脱后堆栈中的活动?P.S.也许问题是我的LoginActivity是主要活动?

Xamarin - Back堆栈不清除

如果Login是你的MainActivity,每次应用关闭和打开时,它将是用户看到的第一个屏幕。使用启动屏幕,可以检查您的用户是否已经通过身份验证,并从那里重定向他们。你所说的行为是预期行为

在类的属性中添加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();