Я делаю простую 2d-игру для платформы Android, которая отлично работает с версии 2.0 и выше, но при тестировании на устройстве 1.6 она сразу вылетает. При запуске отладчика кажется, что я получаю исключение нулевого указателя в классе потока. Мне просто было интересно, есть ли у кого-нибудь идеи о том, где может быть проблема.
Вот код для класса потока:
package com.marcusortiz.burnination;
import android.graphics.Canvas;
import android.view.SurfaceHolder;
public class GameThread extends Thread
{
private SurfaceHolder sHolder;
private MainView panel;
private boolean isRunning;
public GameThread(SurfaceHolder sHolder, MainView panel)
{
this.sHolder = sHolder;
this.panel = panel;
}
public void setRunning(boolean isRunning)
{
this.isRunning = isRunning;
}
public SurfaceHolder getSurfaceHolder()
{
return sHolder;
}
@Override
public void run()
{
Canvas canvas;
while(isRunning)
{
canvas = null;
try
{
canvas = sHolder.lockCanvas(null);
synchronized(sHolder)
{
for(Sprite s : panel.getSprites())
{
s.update();
}
panel.onDraw(canvas);
}
}
finally
{
if(canvas != null)
{
sHolder.unlockCanvasAndPost(canvas);
}
}
}
}
}
Возможно, есть некоторые проблемы совместимости с этим кодом, о которых я не знаю - я очень начинающий, когда дело доходит до использования потоков.
РЕДАКТИРОВАТЬ : вот запрошенная трассировка стека
burnination [Android Application]
DalvikVM[localhost:8608]
Thread [<3> main] (Running)
Thread [<15> Binder Thread #3] (Running)
Thread [<13> Binder Thread #2] (Running)
Thread [<11> Binder Thread #1] (Running)
Thread [<17> Thread-9] (Suspended (exception NullPointerException))
GameThread.run() line: 53