2017-11-07 3 views

Antwort

0

Sie static Ressourcen verwenden werden, das ist die häufigste Ursache für dieses Problem.

Wenn Ihre App pausiert ist, kann das Betriebssystem entscheiden, es zu schließen (um Speicher freizugeben), einschließlich des OpenGL-Kontexts, aber dies ist nicht garantiert.

Wenn Ihre App in den Vordergrund kommt, startet OS eine neue Instanz Ihrer App. Dazu wird dieselbe VM der vorherigen Instanz Ihrer App erneut verwendet, einschließlich aller bereits geladenen Assets. Dies bedeutet auch, dass alle statischen Variablen den Wert haben, den sie aus der vorherigen Ausführung Ihrer App hatten. Wenn eine dieser Variablen Ressourcen enthält, sind diese Ressourcen nicht mehr gültig. Ihre Anwendung erstellt einen neuen OpenGL-Kontext, aber die Assets verweisen immer noch auf den alten ungültigen Kontext.

so schlage ich vor, nicht static Ressource in android zu halten, z. AssetManager, Texture, BitmapFont ....

Wenn Sie noch Statik entscheiden dann zu verwenden, stellen Sie sicher, ihren gesamten Lebenszyklus zu verstehen.

+1

Perfekte Antwort. Ich habe auf die Haut als statisch zugegriffen. Vielen Dank :) –

Verwandte Themen