2012-10-17 26 views
0

我想在Android的線程進行檢查,以檢查另一個類的方法的返回值。這是我到目前爲止的代碼:如何對另一個類的返回值的andorid執行連續檢查?

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

您可以發佈MyGame類代碼? – Daniel

回答

3

這似乎是很糟糕的設計給我。相反,我會建議創建有一個方法,onGameOver()接口OnGameOverListenerMyGame類具有客戶端可以設置的此接口的實例。然後,當MyGame類決定了比賽結束時,它可以調用onGameOver()

看那observer pattern

4

爲什麼不創建某種監聽器(接口)的?

小和簡單的例子,

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

注:你並不需要一個setGameOverListener方法,你也可以改變你的構造函數有一個聽衆的說法。

監聽器應該是這樣的:

interface GameOverListener { 
    abstract public void notifyGameOver(); 
} 

,並創建側的方法,你MyGame對象:

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

而且你的活動將實現一個監聽器,並在notifyGameOver()方法,你能打開活動。

像這樣:

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

要通知你的遊戲已經結束只是讓你MyGame對象調用notifyGameOver()方法:

gol.notifyGameOver(); 
+0

我想補充的是,典型的機器人/ Java約定是'onGameOver()'而不是notifyGameOver()',但當然以'供您選擇 – JRaymond

+0

我經常用「上」來,但這個燒毛目的是什麼在起作用.. –

相關問題