本文分两部分:Handler部分和HandlerThread部分。
一、handler知识:
情境一:主线程发消息,主线程接收。
UI如下:
代码如下:
public class MainAct extends Activity {
Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what){
case 1:
text.setText("文案又改了");
break;
}
}
};
private TextView text;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_layout);
text = (TextView) findViewById(R.id.text);
}
public void clickme(View view){
handler.post(new Runnable() {
@Override
public void run() {
text.setText("文案改变");
}
});
}
public void clickme2(View view){
handler.sendEmptyMessage(1);
}
}
点击后效果如下:
handler的两种用法:一是通过post(runnable),一是sendEmptyMessage(),需要知道的事,不管是runnable还是sendEmptyMessage传递消息后的handleMessage方法都是在主线程中执行的。
情景二、子线程发消息,主线程接收:
又称为线程间通信。
常见例子举例:发送验证码倒计时处理。
代码如下: