Xamarin Forms: замораживание экрана при нажатии кнопки возврата - PullRequest
0 голосов
/ 06 ноября 2018

У меня проблема с навигацией в приложении. Когда через несколько раз я больше не могу ориентироваться, когда я использую кнопки как оборудования, так и кнопки панели действий, чтобы вернуться на главную страницу, иногда экран даже зависает, я много искал и где-то читал, что может быть чем-то на заднем плане главной страницы, В моем случае это страница как 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 голосов
/ 07 ноября 2018

Я просто реализую «IDestructable» в моем ViewBase.cs и помещаю «GC.Collect ()» перед вызовом базового метода, и он перестает ломаться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...