Für technische Praktiker ist es oft nicht so, dass sie nicht wissen, wie es geht, sondern dass sie nicht wissen, was sie tun sollen. Heute habe ich einige Erfahrungen darüber gesammelt, wie? zur Optimierung von Android-Anwendungen. , insgesamt acht Dimensionen.
Warum?1. Layoutoptimierung
Aktivieren Sie die Option „GPU-Überzeichnung anzeigen“ im Entwickleroptionen, um zu beobachten, ob eine Überzeichnung vorliegt
Wählen Sie im Entwickler „Profil GPU Rendering“ in den Optionen die Option „Auf dem Bildschirm als Leiste“ aus
TraceView verwenden um die CPU-Ausführung zu beobachten
um eine große Anzahl von Erstellungen benutzerdefinierter Komponenten in onDraw() zu vermeiden. Temporäre Objekte wie String, um ein häufiges Auslösen von GC zu vermeiden
Erwägen Sie in onDraw() von benutzerdefinierten Komponenten die Verwendung von canvas.clipRect(), um den Bereich zu zeichnen, der gezeichnet werden muss
Für Komponentencontainer wie ListView sollten Sie die Verwendung von „convertView“ und „ViewHolder“ in Betracht ziehen >
Warum?Ressourcen sind immer begrenzt, und auch bei Android führt eine übermäßige/unangemessene Belegung von Speicherressourcen dazu, dass Anwendungen häufig abgebrochen werden und sich letztendlich auch auf die allgemeine Benutzererfahrung auswirkt. Wie erkennt man?
Aktiv Speicher freigeben, Speicher entsprechend in onLowMemory() und onTrimMemory() freigeben
Verwenden Sie sinnvoll mehrere Prozesse, z. B. Musikplayer, die in Hauptprozesse und Wiedergabeprozesse unterteilt werden können
Berücksichtigen Sie begrenzte Warteschlangen, wenn Sie asynchrone Warteschlangen verwenden
Wenn Sie die Größe der HashMap genau kennen, legen Sie die Kapazität dafür während der Initialisierung fest
3. Energieoptimierung
Energie ist eine sehr wertvolle Ressource für mobile Geräte. Als Entwickler gibt es sie Es ist notwendig, den Benutzer zu berücksichtigen und den Stromverbrauch zu senken. Umfragen zeigen, dass in der Regel nur etwa 30 % des Stroms von den Kernfunktionen des Programms verbraucht werden, wie z und Hintergrundbenachrichtigungen.
Sehen Sie sich die Stromverbrauchsstatistiken der APP in den Telefonoptionen an
Verwenden Sie das Battery Historian Tool, um den detaillierten Stromverbrauch anzuzeigen
Reduzieren Sie den Anzahl der Bildschirmaktivierungen Verwenden Sie WakeLock mit der Dauer korrekt.
Wenn Sie nicht unbedingt erforderliche Vorgänge in den Ladezustand verzögern, wie z. B. Protokollberichte, kann dies während des Nachtladens erfolgen. Dies kann in Verbindung mit JobScheduler verwendet werden
Wenn Sie Sensoren zur Datenerfassung verwenden, denken Sie daran, die Registrierung zu stornieren, sobald sie nicht mehr benötigt wird.
Netzwerkkommunikation reduzieren und Kommunikation zusammenführen.
Nutzen Sie die Positionierungsfunktion rational, reduzieren Sie die Häufigkeit von Standortaktualisierungen und verwenden Sie Positionierungsanforderungen unterschiedlicher Genauigkeit entsprechend der tatsächlichen Situation
4. Netzwerkoptimierung
Heutzutage Fast alle Apps müssen mit dem Internet verbunden sein, um einerseits das Erlebnis zu verbessern und andererseits den Datenverkehr und den Stromverbrauch zu reduzieren für Benutzer oder Netzwerkdienstanbieter, und kein Entwickler sollte davon ausgehen, dass die Netzwerkressourcen unbegrenzt sind.
Verwenden Sie Network Traffic Tools in Android Studio, um Netzwerkanfragen anzuzeigen
Monitor in Android Studio verwenden
Verwenden Sie Paketerfassungstools wie Fidder oder Charles, um Netzwerkdatenpakete zu analysieren
Stellen Sie sicher, dass Sie bei Bedarf einen Cache verwenden, egal ob es sich um Bilder oder normale Daten handelt LruCache und DiskLruCache zum Aufbau Ihres eigenen Caching-Systems und zum Entwerfen von Caching-Strategien entsprechend tatsächlichen Szenarien
Vermeiden Sie übermäßige Netzwerksynchronisierung und führen Sie verwandte Netzwerkanforderungen zusammen
Bestimmen Sie die Anforderungsstrategie entsprechend dem tatsächlichen Szenario und vermeiden Sie die Verwendung fester Intervallfrequenzen für den Netzwerkbetrieb. Wenn Sie beispielsweise eine Verbindung zu WLAN herstellen und aufladen, kann die Häufigkeit hoch sein, nachdem die erste Netzwerkanforderung fehlgeschlagen ist für die nächste
verwendet werden, um die Datenübertragungsmenge zu reduzieren und die übertragenen Daten zu komprimieren. Bei der Übertragung müssen Sie das entsprechende Bildformat auswählen und entsprechende Bilder anfordern Spezifikationen entsprechend der Anzeigegröße. Sie können die Verwendung von ProtocolBuffers in Betracht ziehen, um die Größe der übertragenen Daten zu reduzieren Einerseits DNS-Auflösungszeit und andererseits Domain-Namen-Hijacking verhindern
Warum?
Verwenden Sie adb shell am start -W [packageName]/[packageName.MainActivity]
, um die Kaltstartzeit zu messen
Reduzieren Sie komplexe und zeitaufwändige Vorgänge in onCreate() der Aktivität
onCreate() und attachmentBaseContext() der Anwendung reduzieren ebenfalls komplexe und zeitaufwändige Vorgänge, aber für viele Apps ist dies A Hier werden zahlreiche Initialisierungsvorgänge für Komponenten und Dienste durchgeführt. Erwägen Sie nach Möglichkeit eine parallele Initialisierung.
Stellen Sie ein benutzerdefiniertes Startfenster bereit, indem Sie beispielsweise ein Bild als Startfenster anzeigen Thema.
Optimiertes Layout
6. Volumenoptimierung
Für Benutzer ist die Volumenoptimierung ein wichtiger Teil der Ressourceneinsparung, egal ob es sich um Benutzerplatz, Netzwerk oder Zeit handelt . Wenn Sie derzeit SDK-Produkte herstellen, ist die Größenoptimierung ebenso wichtig.
Verwenden Sie Android Lint, um ungenutzte Ressourcen zu überprüfen
Reduzieren Sie unnötige abhängige Bibliotheken/Jar und geben Sie der Erfüllung von Anforderungen Vorrang. Wählen Sie eine kleine Größe.
Verwenden Sie das Proguard-Tool, um den Code zu verschlanken, zu optimieren und zu verschleiern
Reduzieren Sie die Anzahl der SO-Dateien und stellen Sie SO-Dateien bereit entsprechend der tatsächlichen Situation Datei
Verwenden Sie ShrinkResource in Gradle, um nutzlosen Code und Ressourcen aus dem APK-Installationspaket auszuschließen
Reduzieren Sie die Bildgröße Ressourcen, Bildkomprimierung in Betracht ziehen oder Vertor Drawable anstelle von PNG/JPEG verwenden
Bildressourcen gezielt mit entsprechenden Auflösungen bereitstellen
Vorhandene Bilder wiederverwenden meist durch Umwandlung vorhandener Bilder durch Code wiederverwendet
Verwenden Sie Plug-in-Technologie (verwenden Sie sie nicht, wenn das Projekt einfach ist)
7. Leistungsoptimierung
Wenn Sie 100 % Ihrer Fähigkeiten nutzen können, nutzen Sie nicht nur 50 % davon Wichtig für die Anwendung. Wenn zwei Autos zum gleichen Preis verkauft werden, werden sich die meisten Leute für das mit der besseren Leistung entscheiden.
Verwenden Sie Lint, um eine statische Analyse durchzuführen, aktivieren Sie StrictMode in den Entwickleroptionen in Android Studio Analysis->Inspect Code
oder in der Code
Codeüberprüfung
Aufgabenparallelisierung, mögliche Aufgaben parallelisieren. Verlassen Sie sich bei Vorgängen mehr auf Thread-Pools, anstatt Threads direkt zu verwenden
Wenn Sie Daten serialisieren müssen, geben Sie Serialisierbar Vorrang
Wählen Sie geeignete Datenstrukturen und klären Sie die Komplexität von List/Set/Map/Stack-Operationen
Verwenden Sie Android, um effizientere Container bereitzustellen , wie zum Beispiel die Verwendung von ArrayMap anstelle von HashMap. Darüber hinaus gibt es SparseBoolMap, SparseIntMap, SparseLongMap
Die Verwendung statischer Konstanten anstelle von Enum-Typen kann den Speicherverbrauch um mindestens das Doppelte reduzieren
Verwenden Sie Objektpool-Technologie. Stellen Sie beispielsweise einen Objektpool wie String bereit
Verwenden Sie Caching-Technologie
String Der Spleißvorgang ist auf die Verwendung von StringBuilder beschränkt
Optimieren Sie verwandte Algorithmen und Logik, um unnötige Prozesse zu reduzieren
Übernehmen Sie JNI, um seine Coroutine-So-Dateien für Logik zu konvertieren mit großer Rechenlast, wie z. B. Bildverarbeitung
Zusätzlich zu den oben genannten allgemeineren Optimierungslösungen sollten Sie auch Aufgrund des Zeitdrucks ist die aktuelle Lösung für die Geschäftsimplementierung nicht optimal. Um beispielsweise das Hochladen mehrerer Bilder zu unterstützen, verwenden viele Menschen dies direkt. es ist nicht optimal
Da das Geschäft jedes Produkts unterschiedlich ist, ist es schwierig, einen allgemeinen Optimierungsplan zu haben. Hier sind zwei weitere Ziele, die es wert sind, in Betracht gezogen zu werden:
Wenn möglich, parallelisieren Sie das Seriengeschäft
Vereinfachen Sie Geschäftsprozesse, wenn möglich. Um einen Elefanten in einen Kühlschrank zu stellen, müssen Sie den Kühlschrank öffnen, den Elefanten hineinstellen und ihn schließlich schließen.
Der Hauptgrund dafür, dass die Geschäftsoptimierung an letzter Stelle steht, ist, dass die Geschäftsoptimierung hohe Risiken birgt und die umfassende Zusammenarbeit des Teams erfordert.
Es gibt vier Farbformate für Bilder in Android:
Der Standardwert ist <code style="font-family:'Source Code Pro', monospace;font-size:12.6px;color:rgb(63,63,63);"><span style="font-size:14px;">ARGB_8888</span>
ARGB_8888
, wobei ARGB darstellt Was ist Transparenz, Rot, Grün, Blau? Jeder Wert wird mit 8 Bit aufgezeichnet, dh ein Pixel belegt 4 Byte, insgesamt 32 Bit. Und<span style="font-size:14px;">ARGB_4444</span>
<span style="font-size:14px;">ARGB_4444<br></span>
Es ist ähnlich wie oben, aber jeder Wert wird mit 4 Bits aufgezeichnet, d. h. ein Pixel belegt 2 Byte, also insgesamt 16 Bits. <span style="font-size:14px;">RGB_565</span>
<br>RGB_565
<span style="font-size:14px;">ALPHA_8</span>
Verwenden Sie dann 5 Bit, 6 Bit und 5 Bit, um jeden Wert aufzuzeichnen. Es gibt keine Transparenz. Jedes Pixel belegt 2 Byte, insgesamt 16 Bit "font-family:'Source Code Pro', monospace;font-size:12.6px;color:rgb(63,63,63);">ALPHA_8
: Dieses Pixel Nur das Speichern von Transparenz belegt 1 Byte, also insgesamt 8 Bit. <code style="font-family:'Source Code Pro', monospace;font-size:12.6px;color:rgb(63,63,63);"><span style="font-size:14px;">ARGB_8888</span>In praktischen Anwendungen wird empfohlen,ARGB_8888
<span style="font-size:14px;">RGB_565</span>
und
, Wenn Sie keine Transparenz benötigen, dann wählen Sie <span style="font-size:14px;">RGB_565</span>
RGB_565
<p style="font-size:16px;font-family:'微软雅黑';min-height:1em;color:rgb(62,62,62);line-height:34.1333px;">RGB_565<a href="//m.sbmmt.com/course/list/56.html" target="_self"></a></p>
, wodurch die Speichernutzung um die Hälfte reduziert werden kann. [Empfohlener Kurs: Android-Video-Tutorial]Das obige ist der detaillierte Inhalt vonFür die Enzyklopädie zur Android-Anwendungsoptimierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!