Die zehn besten Tipps zur Optimierung der Leistung von Android-Apps

巴扎黑
Freigeben: 2016-11-11 13:31:03
Original
1064 Leute haben es durchsucht

Ungeachtet des kontinuierlichen Aufkommens von Hammer- oder Auberginen-Handys hat das Android-System immer noch den größten Marktanteil bei Mobiltelefonen, sodass auch die Anzahl der auf Android-Basis entwickelten Apps sehr groß ist. Wie können wir also eine leistungsfähigere Android-App entwickeln? Ich glaube, dass es Softwareentwicklungsunternehmen und Programmierern große Kopfschmerzen bereitet. Heute gebe ich Ihnen einige Tipps zur Verbesserung der Leistung von Android-Apps.

Threads effizient nutzen

1. Aktionen in einigen Threads im Hintergrund abbrechen

Wir wissen, dass alle Vorgänge während der Ausführung der App im Hauptthread (UI-Thread) erfolgen ) standardmäßig Auf diese Weise wird die Reaktionsgeschwindigkeit der App beeinflusst. Dies führt dazu, dass das Programm einfriert, abstürzt oder sogar Systemfehler verursacht. Um die Antwortzeiten zu beschleunigen, müssen zeitaufwändige Vorgänge (z. B. Netzwerkanfragen, Datenbankoperationen oder komplexe Berechnungen) vom Hauptthread in einen separaten Thread verschoben werden. Der effizienteste Weg besteht darin, diesen Vorgang auf Klassenebene abzuschließen. Sie können AsyncTask oder IntentService verwenden, um Hintergrundvorgänge zu erstellen. Wenn Sie sich für die Verwendung von IntentService entscheiden, wird dieser bei Bedarf gestartet und verarbeitet dann die Anfrage (Intent) über einen Arbeitsthread.

Bei der Verwendung von IntentService müssen Sie die folgenden Einschränkungen beachten:

1. Diese Klasse übergibt keine Informationen an die Benutzeroberfläche. Wenn Sie dem Benutzer Informationen zum Verarbeitungsergebnis anzeigen möchten, Bitte verwenden Sie Aktivität;

2. Es kann jeweils nur eine Anfrage bearbeitet werden.

2 ANR

aus dem UI-Thread Durch das Entfernen zeitaufwändiger Vorgänge kann auch verhindert werden, dass Benutzervorgänge zu ANR-Dialogfeldern (System Not Responding) führen. Sie müssen lediglich AsyncTask erben, um einen Hintergrund-Worker-Thread zu erstellen und die Methode doInBackground() zu implementieren.

Eine andere Möglichkeit besteht darin, selbst eine Thread-Klasse oder HandlerThread-Klasse zu erstellen. Beachten Sie, dass dadurch auch die App verlangsamt wird, da die Standard-Thread-Priorität mit der Priorität des Haupt-Threads übereinstimmt, es sei denn, Sie legen die Priorität des Threads explizit fest.

3. Initialisieren Sie den Abfragevorgang im Thread

Wenn der Abfragevorgang im Hintergrund verarbeitet wird, werden die angezeigten Daten nicht in Echtzeit angezeigt, Sie können jedoch das CursorLoader-Objekt zur Beschleunigung verwenden Dieser Vorgang kann dazu führen, dass die Aktivitätsinteraktion mit Benutzern nicht beeinträchtigt wird.

Nach der Verwendung dieses Objekts initialisiert Ihre App einen unabhängigen Hintergrundthread für die Abfrage durch den ContentProvider. Wenn die Abfrage abgeschlossen ist, werden die Ergebnisse an die Aktivität zurückgegeben, die die Abfrage aufgerufen hat.

4. Andere Aspekte, die Aufmerksamkeit erfordern

Verwenden Sie StrictMode, um den UI-Thread auf potenziell zeitaufwändige Vorgänge zu prüfen

Verwenden Sie einige spezielle Tools wie Safe.ijiami, Systrace oder Traceview, um Engpässe in Ihrer Anwendung zu finden;

Verwenden Sie einen Fortschrittsbalken, um dem Benutzer den Fortschritt des Vorgangs anzuzeigen.

Wenn der Initialisierungsvorgang zeitaufwändig ist, zeigen Sie bitte eine Willkommensoberfläche an .

Optimieren Sie die Akkulaufzeit Ihres Geräts

Machen Sie den Benutzern nicht die Schuld, dass sie Ihre App deinstallieren, wenn dadurch die Akkulaufzeit verkürzt wird. In Bezug auf den Batterieverbrauch ist der Hauptstromverbrauch wie folgt:

Aktualisieren Sie das Programm häufig, wenn Sie Daten aktualisieren.

Verwenden Sie EDGE oder 3G, um Daten zu übertragen und Nicht-JIT-Operationen mit regulären Ausdrücken ausführen.

5. Optimieren Sie das Netzwerk

Wenn keine Netzwerkverbindung besteht, lassen Sie Ihre Anwendung Netzwerkvorgänge nur dann aktualisieren, wenn eine Netzwerkverbindung und kein Roaming besteht >Wählen Sie ein kompatibles Datenformat und konvertieren Sie alle Anforderungen, die Textdaten und Binärdaten enthalten, in Binärdatenformatanforderungen.

Verwenden Sie effiziente Konvertierungstools. Erwägen Sie die Verwendung von Streaming-Konvertierungstools und weniger baumförmigen Konvertierungstools

Für eine schnellere Benutzererfahrung reduzieren Sie bitte den wiederholten Zugriff auf den Server.

Verwenden Sie nach Möglichkeit die GZIP-Bibliothek des Frameworks, um Textdaten zu komprimieren und CPU-Ressourcen effizient zu nutzen.

Optimieren Sie die Arbeit der Anwendung am Frontend.

Wenn Sie die Verwendung von Wakelocks in Betracht ziehen, versuchen Sie, diese auf die niedrigste Stufe einzustellen.

Um Potenzial zu verhindern Fehler verursachen keinen Stromverbrauch. Geben Sie das Zeitlimit an.

Aktivieren Sie das Attribut „android:keepScreenOn“. BitmapFactory. Es gibt auch Matcher.reset(newString)-Operationen und StringBuilder.setLength(0)-Operationen, die auf Synchronisierungsprobleme achten sollten, obwohl sie im Hauptthread sicher sind Verwenden Sie mehr Wiederverwendungsstrategien in der Listenansicht.

Verwenden Sie, sofern zulässig, eine grobe Netzwerkpositionierung anstelle von GPS. Im Vergleich dazu benötigt GPS 1 mAh (25 s * 140 mA), während das allgemeine Netzwerk nur 0,1 mAh (2 s * 180 mA) verbraucht. ;

Stellen Sie sicher, dass Sie sich vom GPS-Standortaktualisierungsvorgang abmelden, da dieser Aktualisierungsvorgang auch in onPause() fortgesetzt wird. Wenn sich alle Anwendungen von diesem Vorgang abgemeldet haben, kann der Benutzer GPS in den Systemeinstellungen wieder aktivieren, ohne Batterie zu verschwenden.

Bitte erwägen Sie die Verwendung von Variablen mit geringer Genauigkeit bei umfangreichen mathematischen Operationen und Caching, wenn Sie DisplayMetrics für DPI-Aufgaben verwenden Variablenwert;

7. Im Vordergrund arbeitende Anwendungen optimieren

Bitte stellen Sie sicher, dass der Dienstlebenszyklus kurzlebig ist, da jeder Prozess 2 MB Speicher benötigt und wenn das Vordergrundprogramm Speicher benötigt Es wird auch neu gestartet.

Halten Sie die Speichernutzung nicht zu hoch.

Wenn Sie möchten, dass die Anwendung alle 30 Minuten aktualisiert wird, führen Sie dies bitte durch

Es ist nicht gut, wenn sich der Dienst im Pull- oder Sleep-Zustand befindet, weshalb AlarmManager oder die Konfigurationseigenschaft stopSelf() verwendet werden sollten, wenn der Dienst endet.

8. Weitere Vorsichtsmaßnahmen

Überprüfen Sie den Batteriestatus und den Netzwerkstatus, bevor Sie das Gesamtupdate durchführen, und warten Sie, bis der beste Zustand erreicht ist, bevor Sie einen groß angelegten Austauschvorgang durchführen Lassen Sie Benutzer den Stromverbrauch sehen, z. B. Aktualisierungszyklen und Hintergrundvorgänge.

Benutzeroberfläche mit geringer Speichernutzung implementieren.

Wenn wir das Layout trennen Wenn Sie eine Benutzeroberfläche erstellen, erstellen Sie eine App, die den Speicher missbraucht und zu unangenehmen Verzögerungen in der Benutzeroberfläche führt. Der erste Schritt zu einer reibungslosen Benutzeroberfläche mit geringem Speicherbedarf besteht darin, Ihre Anwendung nach potenziellen Engpass-Layouts zu durchsuchen. Verwenden Sie Safe.ijiami und das Tool Hierarchy Viewer Tool, das im Android SDK/tools/ enthalten ist.

Ein weiteres gutes Tool ist Lint, das den Quellcode der Anwendung auf mögliche Fehler scannt und die Kontrollergebnisse optimiert.

10. Probleme lösen

Wenn bei den Layout-Anzeigeergebnissen Probleme auftreten, können Sie eine Vereinfachung der Layoutstruktur in Betracht ziehen. Sie können den Typ LinearLayout in den Typ RelativeLayout konvertieren, um die Layouthierarchie zu reduzieren.

Ich hoffe, dass jeder der oben genannten Tipps Teil Ihres täglichen Codes wird und Sie dann unerwartete Ergebnisse sehen. Lassen Sie Google Play herausragendere, reibungslosere, schnellere und energiesparendere Anwendungen sehen und kommen Sie dem Ziel der Android-Perfektion einen Schritt näher.

Verwandte Etiketten:
php
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!