Optimisation du gel Android

Définition du carton

Si dans un cycle Vsync (16,6 ms sur un écran 60 Hz), selon l'ordre d'exécution de l'affichage complet de la dernière image, le dessin du fil d'interface utilisateur de l'application, le rendu du fil RenderThread, la composition de la couche de SurfaceFlinger/HWC, et l'écran final Il montre que si toutes ces actions ne sont pas terminées, le contenu de l'image précédente sera affiché à l'écran, c'est-à-dire que l'image sera supprimée et l'œil nu humain peut avoir l'impression que l'image se fige.


Outil de surveillance hors ligne Caton Monitoring

BlockCanary: 动态检测消息执行耗时。

Sur la base du mécanisme de message, définissez l'imprimante dans le Looper, surveillez l'opération entre le répartiteur et l'arrivée, respectez le seuil de vidage chronophage et les informations sur le périphérique, et affichez les informations bloquées sous la forme d'une notification pour analyse.
insérez la description de l'image iciLes deux étapes principales consistent à enregistrer l'heure T1 avant d'appeler msg.target.dispatchMessage(msg) pour distribuer le message, et d'enregistrer l'heure T2 après avoir appelé msg.target.dispatchMessage(msg) pour distribuer le message. Si T2-T1 est supérieur à le paramètre Le seuil de décrochage imprimera la pile d'appels de méthode actuelle et affichera d'autres invites ou journaux d'impression pertinents ;
blockcanary utilise pleinement le mécanisme de boucle et exécute le println de l'imprimante avant et après l'exécution de dispatchMessage dans la méthode de boucle de MainLooper pour la sortie et fournit des méthodes pour configurer l'imprimante. En analysant la différence de temps entre avant et après l'impression et en la comparant au seuil, on peut déterminer s'il est bloqué.

Créez AppBlockCanaryContext :

class AppBlockCanaryContext : BlockCanaryContext() {
    
    
}

Initialisez blockCanary dans l'application :

BlockCanary.install(this, AppBlockCanaryContext()).start()

BlockCanary enregistrera diverses informations lorsqu'un gel se produit (défini par getConfigBlockThreshold de MonitorEnv), le sortira dans un fichier du répertoire de configuration et affichera une notification de barre de message (peut être fermée).

Les informations de vidage comprennent :

Informations de base : étiquette du package d'installation, modèle, niveau d'API, uid, nombre de cœurs de processeur, nom du processus, mémoire, numéro de version,
etc. Informations sur l'heure de fin
du processeur : si le processeur est occupé pendant la période, le rapport entre le processeur du système et le processeur de l'application pendant la période
et le rapport entre les E/S et l'utilisation du processeur.

Accès Didi Dokit
https://xingyun.xiaojukeji.com/docs/dokit#/intro
insérez la description de l'image ici Détection de la fréquence d'images : les informations sur la fréquence d'images fournissent une fonction d'affichage de la forme d'onde, ce qui rend la tendance de la surveillance de la fréquence d'images plus évidente.

insérez la description de l'image iciDétection du processeur : les informations d'utilisation du processeur fournissent une fonction de visualisation du graphique de forme d'onde, ce qui rend la tendance de la surveillance du processeur plus vive.

insérez la description de l'image iciDétection de Caton : Lorsque nous développons des applications, nous pouvons rencontrer une situation de Caton, qui est souvent ignorée, et la probabilité que Caton se produise lors de sa réapparition est assez faible. La fonction de gel nous aide à enregistrer le gel qui se produit dans l'application, à verrouiller le moment où le gel se produit dans l'application et à imprimer la pile d'appels de code correspondante.
insérez la description de l'image iciOutil de surveillance en ligne
https://www.tingyun.com/tingyun-apm

Les produits Keynote Tingyun APM (Application Performance Management) peuvent fournir une surveillance des performances au niveau du code et localiser rapidement les défauts, sont compatibles avec le framework OpenTelemetry pour obtenir une collecte complète et prennent en charge la surveillance et la gouvernance des performances des applications sous l'architecture de microservices.

Flux de travail général :
1. Collectez d'abord les données sur le client (Android, iOS, Web, etc.
 )
, puis visualisez les données à utiliser par les utilisateurs.

Le principe d'Android APM est en fait très simple, il peut se résumer en une phrase :

Selon le principe d'empaquetage, dans le processus de conversion de classe en dex, appelez l'api de transformation gradle pour parcourir les fichiers de classe, modifiez le bytecode avec Javassist, ASM et d'autres frameworks, et insérez notre propre code pour réaliser des statistiques de données de performance. Tous les processus ci-dessus sont terminés au moment de la compilation.

Je suppose que tu aimes

Origine blog.csdn.net/qq_24252589/article/details/131343448
conseillé
Classement