|
|
От: |
s3dworld
|
|
| Дата: | 08.10.12 12:37 | ||
| Оценка: | |||
public final class GameThread extends Thread
{
private boolean isExit;public void setExit(boolean _isExit)
{
synchronized(this)
{
isExit=_isExit;
}
}@Override public void run()
{
boolean isLocalExit;
synchronized(this)
{
isLocalExit=isExit;
}
while(!isLocalExit)
{
// Начало секретного кода
// ...
// Конец секретного кода
synchronized(this)
{
isLocalExit=isExit;
}
}
}public void start()
{
surfaceHolder=getHolder();
callback=new SurfaceHolder.Callback()
{
@Override public void surfaceCreated(SurfaceHolder _surfaceHolder)
{
setView();
gameThread.setExit(false);
gameThread.start();
}
@Override public void surfaceChanged(SurfaceHolder _surfaceHolder,int _i,int _i1,int _i2)
{
}
@Override public void surfaceDestroyed(SurfaceHolder _surfaceHolder)
{
try
{
gameThread.setExit(true);
gameThread.join();
surfaceHolder.removeCallback(callback);
}
catch(InterruptedException _exception)
{
}
}
};
surfaceHolder.addCallback(callback);
}gameThread.start();10-08 12:34:27.629: ERROR/AndroidRuntime(6341): FATAL EXCEPTION: main
java.lang.IllegalThreadStateException: Thread already started.
at java.lang.Thread.start(Thread.java:1045)