スレッドの仕組みを教えてください。実際には今はうまくいっていますが、私はその背後にあるロジックを取りたいと思っています。私は同じ時間に2回の計算をするチャンスを与えると思うので、との最初の計算を待つ必要はありません。しかし、それを使用する方法?どこに最初の計算を入れ、2番目の計算を置くのか? C++ではプロセスIDを取得する必要があり、それを分割して使用する必要があります(pID == 1){//最初の計算}androidの作品スレッド
私のクラスは 私はClassBの主な活動 あるにClassA:ビューは SurfaceViewに拡張競合とクラスCとして使用した:ゲームループがスレッドに
を延長として使用して、ここで彼らは、次のとおりです。 にClassA:
public class ClassA extends Activity{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(new ClassB(this));
}
}
ClassBの:
public class ClassB extends SurfaceView{
//Variables.......................
private ClassC GameLoop;
//Constructor.....................
public GameView(final Context context) {
super(context);
GameLoop = new ClassC(this);
Holder=getHolder();
Holder.addCallback(new SurfaceHolder.Callback() {
public void surfaceDestroyed(SurfaceHolder holder) {
// TODO Auto-generated method stub
}
public void surfaceCreated(SurfaceHolder holder) {
// TODO Auto-generated method stub
}
public void surfaceChanged(SurfaceHolder/// blaa bla
// TODO Auto-generated method stub
}
});
this.setOnTouchListener(new OnTouchListener()
{
//@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
}
});
}
@Override
protected void onDraw(Canvas canvas) {
canvas.drawColor(Color.GREEN);
//Using canvas and drawing something on it.
}
}
クラスC:クラスCで
public class ClassC extends Thread {//GameLoop
private ClassB view;
private boolean running = false;
public ClassC(ClassB view) {
this.view = view;
}
public void setRunning(boolean run) {
running = true;
}
@Override
public void run() {
while (running) {
Canvas c;
try {
c = view.getHolder().lockCanvas();
synchronized (view.getHolder()) {
view.onDraw(c);// Here I call onDraw to draw everything
}
} finally {
if (c != null) {
view.getHolder().unlockCanvasAndPost(c);
}
}
}
}
}