Face à un problème lors de l'utilisation de SurfaceView et des éléments de dessin d'un tableau mis à jour dans un autre thread. Les valeurs dans le tableau ne sont toujours pas nulles. Ci-dessous, je donne le code et les messages d'erreur. Avec quoi peut-il être connecté? Je serai très heureux d'aider!Exception dans la boucle lors de l'utilisation d'un tableau à partir d'un autre thread
SurfaceViewThread:
@Override
public void run() {
Canvas canvas;
while (runFlag) {
canvas = null;
try {
// получаем объект Canvas и выполняем отрисовку
canvas = surfaceHolder.lockCanvas(null);
synchronized (bw.multithreadLayers) {
if (canvas == null) return;
p.setShader(new LinearGradient(0, 0, 0, scrH, bw.getColor(), bw.getColor2(), Shader.TileMode.MIRROR));
canvas.drawPaint(p);
p.setShader(null);
p.setTextSize(textSize);
p.setColor(0xFFffffff);
for (int i = 0; i<bw.multithreadLayers.size(); i++) {
try {
for (int j = 0; j<bw.multithreadLayers.get(i).size(); j++) {
GObject go = bw.multithreadLayers.get(i).get(j);
canvas.drawBitmap(go.getTexture(), go.getX(), scrH-go.getY()-go.getTexture().getHeight(), p);
}
} catch(Exception e) {
System.out.println("JException, " + i + ", " + e.getMessage());
}
}
canvas.drawBitmap(player, objX, objY, p);
//some code...
}
}
finally {
if (canvas != null) {
surfaceHolder.unlockCanvasAndPost(canvas);
}
}
}
}
MultithreadLayers:
lowLayers.clear();
lowLayers.add(layer0);
lowLayers.add(layer1);
lowLayers.add(layer2Active);
multithreadLayers = lowLayers;
Exceptions:
06-19 08:05:41.967 I/System.out(30470): JException, 0, Attempt to invoke virtual method 'java.lang.Object java.util.ArrayList.get(int)' on a null object reference
Et
06-19 08:05:43.601 I/System.out(30470): JException, 1, Index: 1, Size: 3
En raison de ces exceptions, vacillante apparaît à l'écran ... –
Vérifiez si 'bw.multithreadLayers.get (i)' est nulle, sinon passez alors avec 'bw.multithreadLayers.get (i) .get (j)' ... Vérifiez également null pour 'GObject go' –
Regardez la trace de la pile pour trouver la ligne de votre code qui provoque l'erreur. –