Ich entwickle ein Android-Spiel und habe eine Frage zum Speichern der Spielelemente, ohne Garbage Collector auszulösen.
Mein Spiel benötigt eine Sammlung, in der die Spielelemente nach x- und y-Positionen gespeichert sind (alle Spielelemente haben x, y, Breite und Höhe). Die Sammlung wird dann jedes Bild aufgerufen, um die Elemente nach cameraX, cameraY, Kamerabreite und -höhe abzurufen (der Benutzer kann durch das Spiel scrollen).
Beispiel:
function draw() {
tmp = collection.getElements(tmp,cameraX,cameraY,cameraWidth,cameraHeight);
for(int i = 0; i < tmp.size(); i++) {
tmp.get(i).draw();
}
}
Ich verwende derzeit die Vector-Klasse, um die Sammlungselemente darzustellen, aber der GC wird alle paar Minuten ausgelöst. Ich mache alle meine Zuweisungen im Voraus. Ich habe auch die Funktion getElements geändert, um 1 weiteren Parameter zu akzeptieren - einen temporären Vektor (im Voraus zugewiesen), der mit Elementen gefüllt und dann zurückgegeben wird.
Wie soll ich die Spielelemente speichern, damit der GC nicht ausgelöst wird (ich bevorzuge es niemals, wenn möglich)?
Ich füge der Sammlung zur Laufzeit auch Elemente hinzu. Muss ich sie auch im Voraus zuweisen?