0
サーフェイスビューを使用せずにゲームループを作成してテストしていますが、スレッドを連続して実行できません。下のコードでは、テキストビューに連続して減少する数字が表示されることを期待していますが、一度しか表示されません。Androidスレッド停止
public class ActivityGameTest extends AppCompatActivity {
int bigNumber = Integer.MAX_VALUE;
Thread gameThread;
TextView myText;
private Handler uiHandler;
boolean mRun;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_game_test);
myText = (TextView) findViewById(R.id.txtHello);
uiHandler = new Handler();
gameThread = new Thread(null, processFrame, "ProcessFrame");
mRun = true;
gameThread.start();
}
private Runnable processFrame = new Runnable() {
@Override
public void run() {
while (mRun) {
updateFrame();
// EDIT - UIにこれらの行を追加し
try {
sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
};
private void updateFrame() {
bigNumber--;
uiHandler.post(showFrame);
}
private Runnable showFrame = new Runnable() {
@Override
public void run() {
myText.setText(Integer.toString(bigNumber));
}
};
}
このコードは私のために働いています。問題の解決策を見つけましたか?たぶん、あなたはスレッドでスリープを使用し、それが本当に動作することをテストすることができます。 – Krish
ありがとう@キリスト睡眠を追加すると問題は解決しますが、なぜですか? – NiMuSi
遅延なしでUIを無限ループで更新しているため、UIスレッドはビジー状態になりすぎてTextviewを更新できず、フレームをスキップします。あなたが変更を見ることができないように。 – Krish