android中的线程无法按预期工作

时间:2013-03-21 12:34:18

标签: java android multithreading mobile

我正在关注如何创建Pong游戏的指南。有一个部分,我应该创建一个Thread,并调用一个移动球的函数。

这是我创建的代码:

package com.ozadari.pingpong;

public class PingPongGame extends Thread {
private Ball gameBall;
private PingPongView gameView;

public PingPongGame(Ball theBall,PingPongView mainView)
{
    this.gameBall = theBall;
    this.gameView = mainView;
}

@Override
public void run()
{
    while(true)
    {
        this.gameBall.moveBall();
        this.gameView.postInvalidate();

        try
        {
            PingPongGame.sleep(5);

        }
        catch(InterruptedException e)
        {

            e.printStackTrace();
        }

    }
}}

该线程被调用并正常工作,但它不会打印任何内容。我试图取消infinte循环并使循环运行100次。等待一段时间后,它会在100次运行后打印到屏幕上,但它不会在中间打印任何内容。

有什么问题?我该如何解决?

1 个答案:

答案 0 :(得分:1)

不确定您发布的代码,但无论如何,您可以使用处理程序并让它每秒运行一次(将时间更改为您想要的):

Handler handler = new Handler();
final Runnable r = new Runnable()
{
    public void run() 
        {
             //do your stuff here
              handler.postDelayed(this, 1000);
        }
};

handler.postDelayed(r, 1000);

http://developer.android.com/reference/android/os/Handler.html

您也可以使用普通线程,并在结尾处调用start。

Thread thread = new Thread()
{
    @Override
    public void run() {
        try {
            while(true) {
                sleep(1000);
                handler.post(r);
            }
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
};

thread.start();