Runnable的我想是我的程序運行的時候,所以我把它放在一個while(true)
循環每5秒執行我run
方法。問題是我的應用程序不會運行,因爲這個循環是while
。有人可以請解釋如何正確編碼這個循環,所以它會一直運行?在while循環
這裏是我的代碼:
int i=0;
while(true){
Runnable x = new Runnable(){
@Override
public void run(){
if(my_list_counter <= 0)
return;
random_counter = rand.nextInt(my_list_counter);
make_words_with_letters.add(list_of_letters.get(random_counter));
for(Button b:button_list)
if (b.getText().equals("")){
b.setText(list_of_letters.get(random_counter));
list_of_letters.remove(list_of_letters.get(random_counter));
my_list_counter--;
break;
}
}
};
i++;
Handler handler = new Handler();
//Run the code in runnable x at increasing time intervals of 5 seconds
handler.postAtTime(x, SystemClock.uptimeMillis() + i*5000);
}
顯然這裏的錯誤是,Runnable
需要到達終點開始運行。但是,因爲它在while(true)
循環中,所以它永遠不會開始運行。 有人知道如何解決這個問題嗎?
編輯:新代碼感謝JavaHunter,但仍然有一個錯誤:
int i=0;
Runnable x = new Runnable(){
@Override
public void run(){
while(true){
if(my_list_counter <= 0)
return;
random_counter = rand.nextInt(my_list_counter);
make_words_with_letters.add(list_of_letters.get(random_counter));
for(Button b:button_list)
if (b.getText().equals("")){
b.setText(list_of_letters.get(random_counter));
list_of_letters.remove(list_of_letters.get(random_counter));
my_list_counter--;
break;
}
}
}
};
i++;
Handler handler = new Handler();
//Run the code in runnable x at increasing time intervals of 5 seconds
handler.postAtTime(x, SystemClock.uptimeMillis() + i*50);
但這代碼只是凍結我的申請。這裏是logcat的:
它顯示了一些關於GC被封鎖,但我不知道到底是什麼意思。有人可以幫忙嗎?
也許嘗試在run方法中添加while?現在你正在爲每一步創建一個新的runnable .. – 2014-12-04 14:47:38
不幸的是仍然有一個bug。請查看上面更新的代碼,看看你能否幫助 – user2456977 2014-12-04 16:06:40