第一种:监听
流程:外部操作 触发事件源 事件源生成事件对象并作为参数 传入事件处理器 事件处理器只想对应操作
监听使用的方法:常用的两种:1、使用匿名类 setXXlistnener 2、为Activity设置监听器 (在xml中设置)
第二种、接口回调
例如:①在该组件上触发屏幕事件: boolean onTouchEvent(MotionEvent event);
②在该组件上按下某个按钮时: boolean onKeyDown(int keyCode,KeyEvent event);
③松开组件上的某个按钮时: boolean onKeyUp(int keyCode,KeyEvent event);
④长按组件某个按钮时: boolean onKeyLongPress(int keyCode,KeyEvent event);
⑤键盘快捷键事件发生: boolean onKeyShortcut(int keyCode,KeyEvent event);
⑥在组件上触发轨迹球屏事件: boolean onTrackballEvent(MotionEvent event);
如果为按钮同时设置 监听,回调,Activity监听 执行的顺序是 监听、回调、Activity监听
如果回调返回True 则不会传播了
Handler(消息处理机制):
为什么要引入Handler 多线程并发操作UI组件 会引发安全问题 所以呢规定只允许在UI线程中修改Actiity组件 那么如果想要在子线程中修改UI组件怎么办呢 需要用到Handler了
Handler的流程:Handler 发送一个Message消息 发送完以后就放进了MessageQueue消息队列里面 然后呢 Looper(用来管理消息队列的) 取出Message 并交给Handler去处理
handler 有写在主线程跟子线程两种方式 主要区别在于 写在子线程中需要创建Looper对象