我想在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 欢迎任何想法。
答案 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()