Android エミュレータ画面に一定の間隔でテキストを表示するアプリケーションを開発しました。Handler
クラスを使用しています。以下は私のコードの一部です:
handler = new Handler();
Runnable r = new Runnable() {
public void run() {
tv.append("Hello World");
}
};
handler.postDelayed(r, 1000);
このアプリケーションを実行すると、テキストは 1 回だけ表示されます。なぜでしょうか?
ベストアンサー1
あなたの例に対する簡単な修正は次のとおりです:
handler = new Handler();
final Runnable r = new Runnable() {
public void run() {
tv.append("Hello World");
handler.postDelayed(this, 1000);
}
};
handler.postDelayed(r, 1000);
または、たとえば通常のスレッドを使用することもできます (元のランナーを使用)。
Thread thread = new Thread() {
@Override
public void run() {
try {
while(true) {
sleep(1000);
handler.post(this);
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
};
thread.start();
実行可能オブジェクトは、実行のためにメッセージ キューに送信できるコマンドとして考えることができ、ハンドラーはそのコマンドを送信するために使用されるヘルパー オブジェクトとして考えることができます。
詳細はこちらハンドラ