如何对android返回另一个类的返回值进行连续检查?

时间:2012-10-17 19:13:44

标签: java android libgdx

我想在android线程中执行检查以检查另一个类中方法的返回值。到目前为止,这是我的代码:

public class HelloWorldAndroid extends AndroidApplication {

    private MyGame myGame;

@Override
public void onCreate (Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

            **********Other lines Omitted***********

    myGame = new MyGame(false, 30, new AndroidLeaderboard());


            //check to see if the game is over
    Thread background = new Thread(new Runnable() {

        @Override
        public void run() {
            if (myGame.gameOver()) {


                //if the game is over go to another screen
                startActivity(new Intent(HelloWorldAndroid.this, MainActivity.class));

            }
        }

    });
            background.start();
      }

我试过用处理程序实现它,但它只是不执行检查所以当值为true时它仍然运行。有没有人知道如何在这个线程的运行过程中连续执行检查myGame.gameOver() = true(所以我可以继续进行不同的活动)。

在这个问题上绞尽脑汁待了好几天仍然没有任何东西:S 欢迎任何想法。

2 个答案:

答案 0 :(得分:4)

为什么不创建某种Listener(接口)?

小而基本的例子,

myGame = new MyGame(false, 30, new AndroidLeaderboard());
myGame.setGameOverListener(this);

注意:您不需要setGameOverListener方法,也可以将构造函数更改为具有侦听器参数。

听众看起来像这样:

interface GameOverListener {
    abstract public void notifyGameOver();
}

在MyGame对象旁边创建一个方法:

setGameOverListener(GameOverListener gol){
    this.gol = gol;
}

您的Activity将实现该侦听器,并在notifyGameOver()方法中打开该活动。

像这样:

public void notifyGameOver(){
    startActivity(new Intent(HelloWorldAndroid.this, MainActivity.class));
}

要通知您的游戏已结束,只需让您的MyGame对象调用notifyGameOver()方法:

gol.notifyGameOver();

答案 1 :(得分:3)

这对我来说似乎是非常糟糕的设计。相反,我建议创建一个具有一个方法OnGameOverListener的接口onGameOver()MyGame类具有客户端可以设置的此接口的实例。然后,当MyGame类决定游戏结束时,它可以调用onGameOver()

查看observer pattern