AndroidStudio - Handler & Message多线程发送消息

1.创建一个类继承自多线程

public class Script_Thread extends Thread
{
    @Override
    public void run()
    {

    }
}

2.在类中创建Handler (android.os.Handler) 变量

public Handler handler = new Handler(Looper.myLooper());

private Message message = new Message();

 3. 封装一个便于使用的自定义传递消息方法

private void SendMessage(int id, String msg)
{
    message = new Message();
    message.what = id;
    message.obj = msg;
    handler.sendMessage(message);
}

方法参数解释:

id:用户自定义的消息代码,这样接收端可以了解这个消息的信息。每个handler各自包含自己的消息代码,所以不用担心自定义的消息跟其他handlers有冲突

msg:传递给接收器的字符串内容(message.obj可以赋值很多种数据类型,具体请参阅官方手册)


4. 在线程的 run() 方法中调用SendMessage()

public class Script_ValidLocalFiles extends Thread
{
    @Override
    public void run()
    {       
        SendMessage(0, "发送的测试内容");
    }
}

5. 在MainActivity中启动一个多线程

private void StartThread()
{
    Script_Thread  thread = new Script_Thread ();
    thread .handler = new Handler(new Handler.Callback()
    {
         @Override
         public boolean handleMessage(@NonNull Message msg)
         {
              Log.i("-------------------消息状态:", String.valueOf(msg.obj));
              hinttext.setText(String.valueOf(msg.obj));
              return true;
         }
    });

    thread .start();
}

流程解释:当多线程运行前会实例化一个Handler赋值给多线程脚本中的Handler,多线程脚本在线程运行方法中调用自定义封装的SendMessage()方法传递消息给MainActivity中的Handler,在handleMessage方法中的 msg 参数就是传递过来的消息内容

猜你喜欢

转载自blog.csdn.net/seven7745101/article/details/126782444