Androidで定義された間隔で実行可能なスレッドを実行するにはどうすればいいですか? 質問する

Androidで定義された間隔で実行可能なスレッドを実行するにはどうすればいいですか? 質問する

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();

実行可能オブジェクトは、実行のためにメッセージ キューに送信できるコマンドとして考えることができ、ハンドラーはそのコマンドを送信するために使用されるヘルパー オブジェクトとして考えることができます。

詳細はこちらハンドラ

おすすめ記事