Xamarin表单:“导航”后退按钮上的“冻结”屏幕

时间:2018-11-06 19:23:51

标签: c# xamarin xamarin.forms prism

我在应用程序中导航时遇到问题。几次无法导航后,有时甚至同时使用硬件和操作栏按钮返回到主页时,有时屏幕甚至冻结,我进行了很多搜索并读取了可能在主页背景中显示的内容,我的情况是该页面作为CustomRenderer,但应该不会有问题,因为它仍然可以浏览几次,所以我尝试从背景中删除渐变并保留白色(默认),直到导航更多,但继续冻结该应用程序或只是不再浏览。

值得注册的是,在进行导航的命令中插入一个断点,在它仍然通过导航行的100%的时间内,我不知道会发生什么。

使用的框架: PRISM

App.xaml.cs:

protected override async void OnInitialized()
        {
            InitializeComponent();

            await NavigationService.NavigateAsync("NavigationPage/" + nameof(DashboardPage));
        }

渐变渲染器示例:

public class GradientPageRenderer : PageRenderer
    {
        protected override void OnElementChanged(VisualElementChangedEventArgs e)
        {
            base.OnElementChanged(e);

            if (e.OldElement == null) // perform initial setup
            {
                var page = e.NewElement as ContentPage;
                var gradientLayer = new CAGradientLayer();
                gradientLayer.Frame = View.Bounds;
                gradientLayer.Colors = new CGColor[]
                {
                    ((Color)App.Current.Resources["DefaultGreenColor"]).ToCGColor(),
                    ((Color)App.Current.Resources["DefaultPurpleColor"]).ToCGColor()
                };
                View.Layer.InsertSublayer(gradientLayer, 0);
            }
        }
    }

问题发生在iOS和Android。

1 个答案:

答案 0 :(得分:0)

我只需在ViewBase.cs上实现“ IDestructable”,然后将“ GC.Collect()”放在调用基方法之前,它就会停止运行。