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 参数就是传递过来的消息内容