我做這個小碼:關於線程和延遲時間
public class Game1Activity extends Activity {
/** Called when the activity is first created. */
private final Handler handler = new Handler();
private final Runnable run = new Runnable()
{
public void run(){
update();
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
update();
}
public void update(){
try
{
Log.i("update thread", "updated");
}
catch (Exception e)
{
Log.i("update thread", "catched an exception!");
}
finally
{
handler.postDelayed(run, 33);
}
}
}
就像你看到的,有關於它沒有什麼特別的其他比它在日誌聊天更新,每33毫秒寫入(每秒30幀)。
這裏是我的問題,如果u可以從日誌聊天看:
09-15 09:01:05.955: I/update thread(423): updated
09-15 09:01:06.025: I/update thread(423): updated
09-15 09:01:06.097: I/update thread(423): updated
09-15 09:01:06.166: I/update thread(423): updated
09-15 09:01:06.236: I/update thread(423): updated
09-15 09:01:06.305: I/update thread(423): updated
09-15 09:01:06.374: I/update thread(423): updated
09-15 09:01:06.444: I/update thread(423): updated
09-15 09:01:06.513: I/update thread(423): updated
線程運行約每70毫秒,雙倍時間意! 爲什麼會發生?我的線程是最基本和最簡單的,可以,我懷疑它是否有延遲它的東西
有沒有更好的方法來使其更新完全按照預期?
我試了1000毫秒,即1秒,仍然有一個延遲,它每1020/1030ms更新。所以如果300毫秒是最低的,我應該如何讓應用(遊戲)每33毫秒更新一次(30幀/秒)? –
是的,有一個調度時間,比處理器需要切換應用程序和應用程序之間的線程(任務管理器)。更改正在運行的線程會產生開銷,例如20-30毫秒,它會爲該切換任務增加更多CPU使用率 – 2012-09-15 09:18:27