2017-05-18 1 views
-1

Nous utilisons des formes de xamarin avec prisme. Nous avons des pages simples avec une petite quantité de données à afficher sur chaque page et inclure des calculs simples. Nous utilisons le service de navigation prism pour naviguer entre les pages. Nous éprouvons de la latence en cliquant sur un bouton pour naviguer vers la page suivante. Les données sont récupérées dans OnNavigatedTo car les paramètres de navigation modifient les données. Quelqu'un peut-il éclaircir pourquoi il y a une latence, il est proche 1 + seconde et parfois 2 secondes.Comment améliorer les performances sur les appareils mobiles utilisant des formes xamarin

En outre, il semble que chaque page est rendue deux fois ... Une fois avant OnNaviagatedTo, puis les modifications de données. OnProperty ou OnCollection modifié est déclenché à partir de OnNavigatedTo et il semble provoquer le rendu à nouveau.

Répondre

1

La version 6.3.0 a introduit le concept de OnNavigatingTo, alors que OnNavigatedTo existe depuis longtemps. Il y a une différence nette entre les deux. Comprendre l'ordre dans lequel les choses se produisent devrait vous aider à créer une expérience utilisateur plus agréable.

  • nouvelle page est créée
  • OnNavigatedFrom est appelé
  • OnNavigatingTo est appelé
  • Nouvelle page est poussé sur la navigation Stack et devient visible
  • OnNavigatedTo est appelé

Les applications avoir à tendre la main et récupérer des données peuvent souvent rencontrer des problèmes de latence car il faut du temps pour atteindre le service distant et obtenir les données que nous voulons, puis analyser ces données dans un objet utilisable. Ce problème particulier était celui dans lequel de nombreux développeurs voulaient réduire la demande sur l'interface utilisateur avec devoir actualiser que les liaisons étaient mises à jour qui ont conduit à l'introduction de OnNavigatingTo.

Bien que ni l'un va réduire la latence du réseau, il vous donne une possibilité de faire la page d'appel entrer dans un état IsBusy qui peut afficher une sorte d'icône de chargement qui seraient alors mis à jour false lorsque NavigateAsync finalise et votre nouvelle page apparaît déjà chargé.