Androidの子スレッドは、メインスレッドの内容を変更するためにハンドルを使用しています

1、子スレッドのスレッドメインコンテンツ単純なケースを変更するためにハンドルを使用して

1)、activity_handle.xml

<?XMLバージョン= "1.0"エンコード= "UTF-8" ?> 
< androidx.constraintlayout.widget.ConstraintLayout のxmlns:アンドロイド= "http://schemas.android.com/apk/res/android" 
    のxmlns:アプリ= "HTTP ://schemas.android.com/apk/res-auto」
    のxmlns:ツール= "http://schemas.android.com/tools" 
    のandroid:layout_width = "match_parent" 
    のandroid:layout_height = "match_parent" 
    ツール:コンテキスト= ".HandleActivity" > 

    < のTextViewの
         アンドロイド:ID = "@ + ID / TextViewの" 
        アンドロイド:layout_width = "wrap_content"
        アンドロイド:layout_marginStart = "129dp" 
        アンドロイド:layout_marginTop = "69dp" 
        アンドロイド:テキスト= "@文字列/显示内容" 
        アプリ:layout_constraintStart_toStartOf = "親" 
        アプリ:layout_constraintTop_toTopOf = "親"  /> 

    < ボタン
         アンドロイド:ID = "@ + ID /ボタン3" 
        アンドロイド:layout_width = "wrap_content" 
        アンドロイド:layout_height = "wrap_content" 
        アンドロイド:layout_marginStart = "116dp" 
        アンドロイド:layout_marginTop = "248dp" 
        アンドロイド:テキスト=」@文字列/ボタン2"
        アプリ:layout_constraintStart_toStartOf = "親" 
        アプリ:layout_constraintTop_toTopOf = "親"  /> 
</ androidx.constraintlayout.widget.ConstraintLayout >

2、HandleActivity.java

パッケージcom.example.myapplication。

輸入androidx.appcompat.app.AppCompatActivity。

輸入android.os.Bundle;
輸入android.os.Handler。
輸入android.os.Message。
輸入android.view.View。
輸入android.widget.Button;
輸入android.widget.TextView。

パブリック クラス HandleActivityは拡張AppCompatActivity {
     プライベートボタンBTNを。
    民間のTextViewテレビ; 

    @Override 
    保護された ボイドのonCreate(バンドルsavedInstanceState){
         スーパー.onCreate(savedInstanceState)。
        setContentView(R.layout.activity_handle)。

        BTN = findViewById(R.id.button3)。
        TV = findViewById(R.id.textView)。

        btn.setOnClickListener(新しいView.OnClickListener(){ 
            @Override 
            公共 のボイドのonClick(ビュービュー){
                 新しいスレッド(){ 

                    @Override 
                    公共 のボイドの実行(){
                             スーパー.RUN(); 
                        メッセージmsg = 新しいメッセージ(); 
                        MSG。何1 = ; 
                        handler.sendMessage(MSG); 
                    } 
                } .start(); 
            } 
        }); 
    } 

    ハンドラハンドラ = 新しい新しいハンドラ(){ 
        @Override 
        公共 ボイドのhandleMessage(メッセージMSG){
             スーパー.handleMessage(MSG)、
             IF(MSG == 1 .what。){ 
                tv.setText( "制御ハンドルの内容を変更するメインスレッドを使用して、子スレッド" ); 
            } 
        } 
    }; 
}

 

おすすめ

転載: www.cnblogs.com/zoro-zero/p/11407467.html