Menschen hassen App-Abstürze, insbesondere wenn die App langsamer wird oder für ein paar Sekunden einfriert. Laut einer Umfrage von Dimensional Research erwarten 61 % der Benutzer, dass Programme innerhalb von 4 Sekunden gestartet werden, und 49 % erwarten, dass Eingaben innerhalb von 2 Sekunden reagieren. Wenn die App abstürzt, einfriert oder einen Fehler meldet, deinstallieren 53 % der Benutzer die App.
Ganz gleich, ob Ihre Zielgruppe Verbraucher oder Unternehmen sind, Absturzprobleme können sie völlig enttäuschen. Ich habe mit einigen Mobilentwicklern gesprochen und sie nach den häufigsten Absturzproblemen gefragt, auf die sie gestoßen sind, und sie haben sechs häufige Ursachen genannt:
1. Speicherverwaltung
Alle, die ich gefragt habe, haben darüber gesprochen. Wenn es um die Speicherverwaltung geht, werden die meisten Apps dies tun Starten Sie viele Threads, um den Systemspeicher zu belegen. Sachin Agarwal, Vizepräsident für Marketing bei OpsClarity, sagte, dass Programmierer Code schreiben können, als ob die App, die sie schreiben, die einzige in der App sei. Gleichzeitig schlug er vor, beim Schreiben von Programmen darauf zu achten, „gute Bürger“ zu sein im Anwendungsökosystem.“ .
Speicherprobleme sind nicht bei allen Entwicklern gleich. „In iOS können Sie Objective-C nutzen, um große Speicherprobleme zu lösen“, sagte Andrew Whiting, Vizepräsident für Geschäftsentwicklung bei Solstice Mobile. Aber die Vor- und Nachteile müssen abgewogen werden. „Auf Android benötigen Sie eine tiefere Kontrolle über [Speicher] und können dafür sorgen, dass er genau das tut, was Sie wollen, aber das erhöht die Komplexität.“ „Laden großer Bilder oder Verarbeiten von Bitmaps“, sagte Jonathan Karon, Senior Software Engineering Manager bei New Relic. Häufige Problemursachen sind im Mobile SDK Technical Performance Report zusammengestellt. „Es gibt tatsächlich überraschend viele scheinbare Linker-Probleme auf Android, bei denen die Klasse nicht gefunden werden kann oder es eine Ausnahme gibt, die als nicht klassifizierter Link bezeichnet wird.“ iOS-Apps hingegen sind häufig von NSInternalInconsistency-Ausnahmen betroffen Dies liegt daran, dass ein Entwickler ein Array oder eine Datensammlung an einer Stelle ändert, während etwas anderes dort die Liste der Dinge liest.
2. Software-Lebenszyklus
Der iterative Anwendungsentwicklungsprozess und die häufige Veröffentlichung von Versionen öffnen die Tür für die Markteinführung eines Minimum Viable-Produkts und dessen anschließende Verbesserung im Laufe der Zeit, was heutzutage sehr beliebt ist. Allerdings ist der traditionelle Software-Lebenszyklus aufgrund seiner Abhängigkeit vom Betriebssystem und APIs von Drittanbietern komplizierter geworden.
„Wenn man sich die neuesten Android-Updates ansieht, gibt es viele App-Abstürze“, sagte Agarwal. „Das Betriebssystem selbst ist instabil oder das Betriebssystem wurde aktualisiert, aber die Anwendung wurde nicht aktualisiert“ oder Benutzer laden keine neuen Versionen herunter. „Sie haben keine Kontrolle darüber. Es zeigt einen Kernentwicklungsprozess.“ Entwicklung von Mobil- und Cloud-Computing Die zunehmende Nutzung von Diensten Dritter und den damit verbundenen APIs spart Zeit und trägt dazu bei, Anwendungen schneller auf den Markt zu bringen, bringt jedoch auch eigene Probleme mit sich.
„Viele Bibliotheken haben ein gemeinsames Problem“, sagte Whiting. „Sie versuchen, das Problem aller zu lösen, anstatt für jeden die beste Lösung bereitzustellen.“ Beispielsweise kann eine bestimmte API Leistungseinschränkungen für eine bestimmte Anwendung aufweisen.
APIs können auch knifflige Techniken wie iOS-Methodenoptimierungen verwenden. Wenn der Originalcode (z. B. die API von Apple) nicht verfügbar ist, nehmen Entwickler Änderungen auf der Grundlage des Originalcodes (z. B. der API von Apple) vor. „Man könnte es als eine der ‚dunklen Künste‘ der iOS-App-Entwicklung bezeichnen“, sagte Raman Bhatia, Leiter Mobile bei Fareportal, einem Online-Reisebüro. „[Aber] wenn Ihr Anwendungscode auf eine bestimmte Weise geschrieben ist, kann es zu Abstürzen kommen.“
APIs können auch andere Probleme verursachen. „API-Latenz, Fehlerraten, Datenbandbreite, API-Versionen und die Anzahl der API-Anfragen können alle zu großen Problemen aus kleinen Problemen führen“, sagte Agarwal. Dann ist da noch die API selbst, die spezielle Tools erfordert, um alles zu verfolgen.
API kann auch andere Probleme wie Speicherfehler verursachen. „Wenn Sie ein Objekt erstellen, das aus dem Speicher entfernt wurde, bevor Sie andere Objekte erstellen, ist dies normalerweise kein Problem. Beachten Sie jedoch, dass Sie nicht wissen, ob nachfolgende Objekte auf das gelöschte Objekt verweisen müssen.“ Bei Drittanbieter-Frameworks kann man nie sicher sein, was sie bereinigen und was sie erstellen“, sagte Mitbegründer und Entwickler Long Le Eine ausreichende Abdeckung kann insbesondere bei der großen Anzahl an Android-Versionen und -Geräten eine Herausforderung sein. Obwohl es Emulatoren gibt, können die Leistungseinschränkungen der auf dem Server ausgeführten Software von denen auf der realen Maschine abweichen.
Wenn beispielsweise ein Thread einer Anwendung eine Datenbank liest, während ein zweiter Thread versucht, dieselbe Datenbank zu ändern, „ist das eine Frage des Timings“, sagte Wayne Carter, Chefarchitekt für Mobilgeräte bei Couchbase. „Wenn sie nicht im selben Moment kollidiert wären, wäre das Problem nicht aufgetreten und hätte durch die Protokollbeschreibung maskiert werden können.“
Das Ausführen verschiedener Systeme auf verschiedenen Geräten ist eine praktikable Lösung, aber diese Methode ist teurer als Emulatoren. Dies erfordert ein Gleichgewicht zwischen Budget und Bedürfnissen
Tests sollten Benchmarks von Industriestandards und Benutzererwartungen einbeziehen, um sicherzustellen, dass Inhalte für Entwickler und Benutzer akzeptabel sind. Die Tests sollten ebenfalls fortgesetzt werden. Überwachen Sie die Leistung, suchen Sie nach Benutzerfeedback und lösen Sie dann Probleme so schnell wie möglich.
4. Netzwerkverwaltung
Da Anwendungen immer stärker vom Netzwerk abhängig werden, sei es für Daten oder Dienste von Drittanbietern, ist die Netzwerkverwaltung zu einer Quelle von Problemen geworden.
Der Hauptgrund für Abstürze ist, wenn Sie Daten abrufen, etwas übermitteln und auf die Wiederherstellung warten möchten und die APP reagiert oder hängen bleibt. Pravin Vazirani, Vice President of Operations, sagte, dass die Entwickler die Wi-Fi-Verbindung vielleicht sehr funktionsfähig gemacht haben, es aber zu Problemen kommen wird, wenn sich Benutzer in Gebieten mit schlechtem Netzwerk befinden. Eine gute Möglichkeit, mit Netzwerkproblemen umzugehen, besteht darin, Benutzer über die Verbindung zu informieren Unterbrechung und bietet, wenn möglich, die Möglichkeit, andere Vorgänge durchzuführen, die von Interesse sein könnten. Wenn Menschen die Ursache eines vorübergehenden Zustands verstehen, der außerhalb der Kontrolle der Anwendung liegt, ist es wahrscheinlicher, dass sie ruhig bleiben und sich nicht über die Software ärgern.
5. Fehlerbedingungen und Ausnahmebehandlung
Aufgrund der Komplexität der mobilen Entwicklung sind einige Fehler unvermeidlich, sei es unerwartete API-Änderungen, die Vermeidung zuvor erkannter Speicherprobleme oder Netzwerkverbindungsbedingungen oder auch nur die Übertragung großer Dateien (z als Bilder oder Videos)
In diesem Fall ist es am besten, eine gute Fehler- und Ausnahmebehandlung bereitzustellen. Wenn der Benutzer beispielsweise falsche Daten eingibt oder Text in das Textfeld eingibt, wenn ein Wert angegeben werden soll, wird die Anwendung nicht versehentlich versucht, einen Fehler zu melden.
In jeder dieser Situationen bemerkt eine ordnungsgemäß codierte Anwendung das Unerwartete, beendet den Prozess oder die Aktivität ordnungsgemäß und benachrichtigt den Benutzer über den Fehler. Wenn Sie die Kommunikationswege offen halten können, haben Sie bessere Chancen, Benutzer zu binden.
6. Zu viel Code
Der beste Rat ist, Ihre Anwendung einfach zu halten. Suchen Sie ein Plug-in für einen bestimmten Zweck, verwenden Sie das Plug-in und schreiben Sie den erforderlichen Code. „Der beste und fehlerfreiste Code ist der Code, den Sie nicht selbst schreiben“, sagt Felipe Laso-Marsetti, leitender Systemingenieur bei Lextech Global Services, einem Unternehmen für mobile Entwicklung für Unternehmen
Das obige ist der detaillierte Inhalt vonWas sind die 6 häufigsten Gründe, warum Apps abstürzen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!