【Android篇】Handler通信机制(代码版)

简介: 通过点击按钮,让子线程1写字符串,传输到Message中,再在子线程1中用主线程的handle对象去发送消息,再让主线程判断是否为子线程1发过来的,再设置为Textview的文字。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="20dp"
        android:text="开始"
        android:id="@+id/btn1"
        android:onClick="startThread"/>
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/tv1"/>
</LinearLayout>


通过点击按钮,让子线程1写字符串,传输到Message中,再在子线程1中用主线程的handle对象去发送消息,再让主线程判断是否为子线程1发过来的,再设置为Textview的文字。


package com.example.a20221130_threadhandler;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
    Button btn;
    TextView textView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btn = findViewById(R.id.btn1);
        textView = findViewById(R.id.tv1);
    }
    //让子线程去运行的方法,获取字符串
    private String GetString(){
        String string="";
        StringBuilder stringBuilder=new StringBuilder();
        for(int i=0;i<10;i++){
            stringBuilder.append("sb" + i);
        }
        //沉睡4秒
        try {
            Thread.sleep(4000);
        }catch (InterruptedException i){
            i.printStackTrace();
        }
        string=stringBuilder.toString();
        return string;
    }
    //获取主线程的Handle
    Handler handler=new Handler(Looper.myLooper()){
        @Override
        public void handleMessage(@NonNull Message msg) {
            super.handleMessage(msg);
            //判断获取到的Message信息是哪个编号
            if(msg.what==0){
                String data = (String) msg.obj;
                textView.setText(data);
                Toast.makeText(MainActivity.this, "主线程收到", Toast.LENGTH_SHORT).show();
            }
        }
    };
    public void startThread(View view) {
        new Thread(new Runnable() {
            @Override
            //run()方法里面是子线程运行的,其他都是主线程,包括start()
            public void run() {
                String s = GetString();
                //创建一个Message类
                Message message=new Message();
                message.what=0;
                message.obj=s;
                //让主线程的handler对象发送信息MessageQueue即可
                handler.sendMessage(message);
            }
        }).start();
        Toast.makeText(this, "任务完成", Toast.LENGTH_SHORT).show();
    }
}


目录
相关文章
|
29天前
|
消息中间件 存储 Java
Android消息处理机制(Handler+Looper+Message+MessageQueue)
Android消息处理机制(Handler+Looper+Message+MessageQueue)
38 2
|
13天前
|
消息中间件 存储 Java
Android面试高频知识点(2) 详解Android消息处理机制(Handler)
Android面试高频知识点(2) 详解Android消息处理机制(Handler)
|
16天前
|
安全 Java 网络安全
Android远程连接和登录FTPS服务代码(commons.net库)
Android远程连接和登录FTPS服务代码(commons.net库)
16 1
|
17天前
|
消息中间件 存储 Java
Android面试高频知识点(2) 详解Android消息处理机制(Handler)
Android面试高频知识点(2) 详解Android消息处理机制(Handler)
41 1
|
18天前
|
存储 安全 数据安全/隐私保护
探索安卓与iOS的隐私保护机制####
【10月更文挑战第15天】 本文深入剖析了安卓和iOS两大操作系统在隐私保护方面的策略与技术实现,旨在揭示两者如何通过不同的技术手段来保障用户数据的安全与隐私。文章将逐一探讨各自的隐私控制功能、加密措施以及用户权限管理,为读者提供一个全面而深入的理解。 ####
33 1
|
20天前
|
消息中间件 存储 Java
Android消息处理机制(Handler+Looper+Message+MessageQueue)
Android消息处理机制(Handler+Looper+Message+MessageQueue)
43 2
|
28天前
|
Android开发 Swift iOS开发
探索安卓与iOS开发的差异:从代码到用户体验
【10月更文挑战第5天】在移动应用开发的广阔天地中,安卓和iOS两大平台各占半壁江山。它们在技术架构、开发环境及用户体验上有着根本的不同。本文通过比较这两种平台的开发过程,揭示背后的设计理念和技术选择如何影响最终产品。我们将深入探讨各自平台的代码示例,理解开发者面临的挑战,以及这些差异如何塑造用户的日常体验。
|
消息中间件 存储 机器学习/深度学习
【Android】Handler 机制 ( Handler | Message | Looper | MessageQueue )(二)
【Android】Handler 机制 ( Handler | Message | Looper | MessageQueue )(二)
139 0
|
消息中间件 存储 调度
【Android】Handler 机制 ( Handler | Message | Looper | MessageQueue )(一)
【Android】Handler 机制 ( Handler | Message | Looper | MessageQueue )(一)
175 0