源码剖析,了解View的事件分发
-
dispatchTouchEvent -> setOnTouchListener -> onTouchEvent、
前提是return 不为true
-
onClick/onLongClick来自onTouchEvent的处理
Handler消息处理
- 未来某时做某事
- 线程间通信
未来某时做某事
在一个页面中,加入一个跳转到HandlerActivity的按钮,通过这个来演示相应的功能。
// 这是Handler最常用的postDelayed方法
// 第一个参数是一个Runnable接口
// mHandler = new Handler();
// mHandler.postDelayed(new Runnable() {
// @Override
// 延迟3s跳转到这个页面
// public void run() {
// Intent intent = new Intent(HandlerActivity.this,ButtonActivity.class);
// startActivity(intent);
// }
// }, 3000);
线程间通信
//注意!!!旧版的初始化方法已经被弃用,下面的是新的初始化方法
mHandler = new Handler(Looper.getMainLooper()){
@Override
public void handleMessage(@NonNull Message msg) {
super.handleMessage(msg);
switch (msg.what){
case 1:
ToastUtil.showMsg(HandlerActivity.this,"线程通信成功!");
break;
}
}
};
new Thread(){
@Override
public void run() {
super.run();
Message message = new Message();
message.what = 1;
mHandler.sendMessage(message);
}
}.start();
点击handler按钮之后,跳转到HandlerActivity的界面,并且在new出的Thread(线程)与Handler相互配合,完成通信实现了Toast