[英]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組合在較舊的版本中效果很好。
您的主要問題是實現游戲循環。 有許多方法可以做到,您可以在某些教程或書籍中找到。 一種方法是這樣的: http : //obviam.net/index.php/a-very-basic-the-game-loop-for-android/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.