Verwendet largeheap in Android eine gute Praxis?

7

Ich entwickle mich in NDK . Es hängt in Galaxy S3 . Zum Testen setze ich android:largeheap = "true" in Manifest . Dann gab es kein hängendes Problem. Ist es eine gute Vorgehensweise, largeHeap="true" zu verwenden?

Besteht die Möglichkeit, dass Google mein Build aufgrund dieses Tags ablehnt und Wie kann ich verhindern, dass meine App hängen bleibt, ohne largeheap="true" zu verwenden?

    
charlotte 27.05.2015, 10:35
quelle

2 Antworten

17

Kurze Antwort

Nein, Wenn Sie es brauchen ist es kein schlechter pactise, weil es dafür da ist.

Lange Antwort

Offizielles Dokument sagt

  

Ob die Prozesse Ihrer Anwendung mit einem großen erstellt werden sollen   Dalvik-Haufen. Dies gilt für alle Prozesse, die für die   Anwendung.
Es gilt nur für die erste Anwendung, die in eine geladen wird   verarbeiten; wenn Sie eine freigegebene Benutzer-ID verwenden, um mehrere zuzulassen   Anwendungen, um einen Prozess zu verwenden, müssen alle diese Option verwenden   konsequent oder sie werden unvorhersehbare Ergebnisse haben.
Die meisten Apps sollten   brauche dies nicht und sollte stattdessen darauf konzentrieren, ihre Gesamtmenge zu reduzieren   Speichernutzung für verbesserte Leistung . Das Aktivieren funktioniert auch nicht   garantieren einen festen Anstieg des verfügbaren Speichers, weil einige Geräte   sind durch ihren gesamten verfügbaren Speicher beschränkt.

Einige Entwickler verwenden es, um OOM-Exception zu vermeiden. Wenn Sie es also nur zur Vermeidung von OOM verwenden, ist das ein sehr sehr schlechter Pakt.

  

Niemals einen großen Heap anfordern, nur weil Sie nicht genügend Arbeitsspeicher haben und   Sie brauchen eine schnelle Lösung . Sie sollten es nur verwenden, wenn Sie genau wissen   wo all dein Speicher zugewiesen wird und warum er beibehalten werden muss


Wenn Sie tatsächlich mehr Speicherplatz benötigen, ist es in Ordnung, zu verwenden. Sie können getMemoryClass() , um den Heap zu überprüfen und getLargeMemoryClass() großer Heap.  

Aber wenn Sie vermeiden können, den largeHeap zu verwenden, wäre es der beste Weg zu gehen, da die offizielle Dokumentation weitergeht:

  

Aber selbst wenn Sie sicher sind, dass Ihre App den großen Haufen rechtfertigen kann,    Sie sollten es vermeiden, es so weit wie möglich anzufordern . Verwendung der   zusätzlicher Speicher wird zunehmend zum Nachteil des gesamten Benutzers   Erfahrung, da Garbage Collection länger dauern und System   Die Leistung kann langsamer sein, wenn die Task umgeschaltet oder andere Aufgaben ausgeführt werden   gemeinsame Operationen.
Außerdem ist die große Heap-Größe nicht die   Dasselbe gilt für alle Geräte und kann genauso sein wie der normale Heap   Größe . Wenn Sie also die große Heap-Größe anfordern, sollten Sie anrufen   getMemoryClass (), um die normale Größe des Heapspeichers zu überprüfen und immer zu versuchen   bleib unter dieser Grenze.

Ich schlage auch vor, dass Sie sich hier den Speicher Ihrer App verwalten ansehen

    
Sid 27.05.2015, 10:45
quelle
6

Ich persönlich würde sagen, dass es nicht wirklich in die Kategorie "gute / schlechte Praxis" fällt, wenn es richtig verwendet wird.

Laut den Dokumenten :

  

Die meisten Apps sollten dies nicht benötigen und sollten sich stattdessen auf das Reduzieren konzentrieren   ihre Gesamtspeicherauslastung für verbesserte Leistung. Aktivieren Sie dies   garantiert auch keine feste Erhöhung des verfügbaren Speichers, weil   Einige Geräte sind durch ihren gesamten verfügbaren Speicher eingeschränkt.

Wenn Sie alles in Ihrer Macht haben, die Speicherauslastung zu reduzieren und sie immer noch benötigen, ist es nicht schlecht, sie zu verwenden.

Wenn deine App hängt, musst du das direkt ansprechen - das largeHeap ist kein Zauberstab, der Probleme für alle Geräte verschwinden lässt. Dieser Punkt wird aus dem folgenden Auszug der Android-Schulungsdokumente deutlich:

  

[Die] Möglichkeit, einen großen Heap anzufordern, ist nur für a gedacht   kleine Apps, die die Notwendigkeit rechtfertigen, mehr RAM zu verbrauchen (z. B.   als eine große Fotobearbeitungs-App). Nie fordern Sie einfach einen großen Heap an   weil dir der Speicher ausgegangen ist und du eine schnelle Lösung brauchst - solltest du   benutze es nur, wenn du genau weißt, wo all dein Gedächtnis ist   zugeordnet und warum es beibehalten werden muss. - (Quelle)

Ich sollte auch hinzufügen, dass Google nicht Ihre App für die Verwendung ablehnt.

    
Ed George 27.05.2015 10:40
quelle

Tags und Links