Estou desenvolvendo um jogo para Android e tenho uma pergunta sobre como armazenar os elementos do jogo sem disparar o coletor de lixo.
Meu jogo precisa de uma coleção na qual os elementos do jogo sejam armazenados de acordo com as posições x, y (todos os elementos do jogo têm x, y, largura e altura). A coleção é chamada de cada quadro para recuperar os elementos de acordo com cameraX, cameraY, largura e altura da câmera (o usuário pode rolar o jogo).
Exemplo:
function draw() {
tmp = collection.getElements(tmp,cameraX,cameraY,cameraWidth,cameraHeight);
for(int i = 0; i < tmp.size(); i++) {
tmp.get(i).draw();
}
}
Atualmente, estou usando a classe Vector para representar os elementos da coleção, mas o gc continua disparando a cada dois minutos. Eu faço todas as minhas alocações antecipadamente. Também modifiquei a função getElements para aceitar mais 1 parâmetro - um vetor temp (alocado antecipadamente) que é preenchido com elementos e depois retornado.
Como devo armazenar os elementos do jogo para que o gc não acione (prefiro nunca, se possível)?
Também adiciono elementos à coleção durante o tempo de execução, também tenho que alocá-los antecipadamente?