ホームページ > Java > &#&チュートリアル > Android の「runOnUiThread」を誤って使用すると、UI が応答しなくなるのはなぜですか?

Android の「runOnUiThread」を誤って使用すると、UI が応答しなくなるのはなぜですか?

Barbara Streisand
リリース: 2024-12-23 20:54:11
オリジナル
798 人が閲覧しました

Why Does Incorrect Use of Android's `runOnUiThread` Lead to Unresponsive UI?

Android の runOnUiThread を理解する

Android 開発では、UI スレッドはユーザー インタラクションの処理とユーザー インターフェイスの更新を担当します。すべての UI 操作が UI スレッドで確実に実行されるようにするには、一般的に runOnUiThread メソッドが使用されます。

提供されたコード スニペットでは、別のスレッド内で UI を更新しようとします。 runOnUiThread を使用します。ただし、現在の実装は正しくないため、ボタンをクリックすると反応しなくなることがあります。その理由は次のとおりです。

runOnUiThread の誤った使用法

runOnUiThread メソッドは、引数として Runnable インスタンスを受け入れます。コードでは、現在のアクティビティに実行可能ファイルを実装するのではなく、誤って Thread(Runnable) を介して新しいスレッドを作成しています。これにより、ルーパーのない別のスレッドが作成されます。これは、UI イベントの処理に不可欠です。

修正されたコード

runThread メソッドは次のとおりです:

private void runThread() {

    new Thread() {
        public void run() {
            while (i++ < 1000) {
                try {
                    runOnUiThread(new Runnable() {

                        @Override
                        public void run() {
                            btn.setText("#" + i);
                        }
                    });
                    Thread.sleep(300);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
    }.start();
}
ログイン後にコピー
この修正されたコードでは、新しいスレッドが作成されますが、その中にはスレッド、

runOnUiThread が呼び出され、UI スレッド上の UI 要素が更新されます。 runOnUiThread に渡される Runnable インスタンスには、ボタンのテキストを更新するコードが含まれています。

runOnUiThread を正しく使用すると、すべての UI-関連する操作はメイン UI スレッドで発生するため、UI のフリーズを防ぎ、応答性を確保します。

以上がAndroid の「runOnUiThread」を誤って使用すると、UI が応答しなくなるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート