Ich hab jetzt mal das Logcat durchsucht und das Problem liegt im Thread, den ich benutze.
java.lang.IllegalThreadStateException: Thread already started
Hier ist der Verweis auf den Quelltext
public void surfaceCreated(SurfaceHolder holder) {
game_Loop.setRunning(true);
game_Loop.start();
}
Hier is nochmal die ganze Klasse etwas gekürtzt.
.......
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
boolean retry = true;
game_Loop.setRunning(false);
while (retry) {
try {
game_Loop.join();
retry = false;
} catch (InterruptedException e) {
}
}
}
@SuppressWarnings("deprecation")
public void surfaceCreated(SurfaceHolder holder) {
game_Loop.setRunning(true);
game_Loop.start();
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format,
int width, int height) {
}
});
}
@Override
public void onDraw(Canvas canvas) {
.......
}
Hier ist noch die run Methode des Threads:
public void run() {
long ticksPS = 1000 / FPS;
long startTime;
long sleepTime;
while (running) {
Canvas c = null;
startTime = System.currentTimeMillis();
try {
c = view.getHolder().lockCanvas();
synchronized (view.getHolder()) {
view.onDraw(c);
}
} finally {
if (c != null) {
view.getHolder().unlockCanvasAndPost(c);
}
}
sleepTime = ticksPS-(System.currentTimeMillis() - startTime);
try {
if (sleepTime > 0)
sleep(sleepTime);
else
sleep(4);
} catch (Exception e) {}
}
Bei der App handelt es sich um ein Spiel und ich benötige den Thread um den Canvas neu zu zeichnen.
Was muss ich ergänzen damits läuft ?
Vielen Dank für eure Hilfe !!
Gruß Tobias
— geändert am 30.05.2015, 16:53:38
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.