/*
* 通常我们在主线程中创建一个Handler,
* 然后重写该Handler的handlerMessage方法,可以看到该方法传入了一个参数Message,
* 该参数就是我们从其他线程传递过来的信息。
*
* 我们在来看下子线程中如何传递的信息,子线程通过Handler的obtainMessage()方法获取到一个Message实例,
* 我们来看看Message的几个属性:
* Message.what------------------>用来标识信息的int值,通过该值主线程能判断出来自不同地方的信息来源
* Message.arg1/Message.arg2----->Message初始定义的用来传递int类型值的两个变量
* Message.obj------------------->用来传递任何实例化对象
* 最后通过sendMessage将Message发送出去。
*
* Handler所在的线程通过handlerMessage方法就能收到具体的信息了,如何判断信息的来源呢?当然是通过what值啦。
* 怎么样很简单吧
*/
package com.jon.udptest;
import androidx.appcompat.app.AppCompatActivity;
import android.annotation.SuppressLint;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import java.util.Timer;
import java.util.TimerTask;
public class MainActivity extends AppCompatActivity {
@SuppressLint("HandlerLeak")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Timer timer = new Timer();
Handler handler = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what) {
case 1:
setTitle("hear me?");
break;
}
super.handleMessage(msg);
}
};
TimerTask timerTask = new TimerTask() {
@Override
public void run() {
Message message = new Message();
message.what = 1;
handler.sendMessage(message);
}
};
timer.schedule(timerTask, 1000);
}
}