簡體   English   中英

如何在活動中進行無限循環

[英]How to make infinite loop in an Activity

當有人在做一些游戲時,他們可以這樣做: mainActivity擴展了Activity ,在這個主要活動中,有一個方法,例如:

setContentView(BouncingBallView);

BouncingBallView擴展了View ,我們有了方法: onDraw() invalidate() ,這些方法用於進行更新,它們在所有幀中都可以執行。

我的問題是我想使用“ onDraw-invalidate”之類的方法進行更新,但在Activity類中卻不在View

我想知道是否有一些主循環,總是在某些update()時刻執行的方法? 我知道在Activity有: onCreate() ; onStart() ; onRestart() ; onResume() ; onPause() ; onStop() ; onDestroy() ,但看不到更新? 我該怎么做?

您要定期更新嗎? 那么計時器可能是一個可行的方法。 在活動的onStart中創建一個計時器實例,並按期望的延遲計划更新任務,如下所示:

public class MyActivity extends Activity {
  ...
  private Timer timer;
  private BouncingBallView ballView;

  ...

  @Override
  public void onResume() {
    timer = new Timer();
    // This timer task will be executed every 1 sec.
    timer.schedule(new TimerTask() {
      @Override
      public void run() {
        ballView.update();
      }
    }, 0, 1000);
  }

  ...

  @Override
  public void onSuspend() {
    // Suspend the updates when the activity is inactive.
    timer.cancel();
  }
}

請注意,計時器任務在單獨的線程中運行,並且在Android中,在與創建線程不同的線程中修改UI元素可能會導致問題。 如果遇到這些問題,處理程序(android.os.Handler)會很有幫助,並且在Honeycomb中有更好的解決方案,但Timer / Handler組合在較舊的版本中效果很好。

這是可以指導您完成游戲更新循環的最佳示例。

Android游戲編程3.游戲循環和動畫。

這一定會對您有所幫助。

謝謝

您的主要問題是實現游戲循環。 有許多方法可以做到,您可以在某些教程或書籍中找到。 一種方法是這樣的: http : //obviam.net/index.php/a-very-basic-the-game-loop-for-android/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM