事件处理方式有很多种。

基于监听的事件处理机制

监听的工作原理?三个组件?
2015安卓开发Chapter3 基于监听的事件处理机制 - 图1

基于回调的事件处理机制

view组件的调用方法

①在该组件上触发屏幕事件: 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);
*⑦当组件的焦点发生改变,和前面的6个不同,这个方法只能够在View中重写哦! protected void onFocusChanged(boolean gainFocus, int direction, Rect previously FocusedRect)

传播机制

监听器—->view组件的回调方法—->Activity的回调方法了
**

Handler机制

  • what:一套消息传递机制
  • 作用:在多线程的应用中,将工作线程需要更新UI的信息传递给UI主线程,实现工作线程对UI的更新

2015安卓开发Chapter3 基于监听的事件处理机制 - 图2
why: 多线程并发更新UI时,保证线程安全
2015安卓开发Chapter3 基于监听的事件处理机制 - 图3
2015安卓开发Chapter3 基于监听的事件处理机制 - 图4
我们的新线程需要更新UI,新建一个Handler, 然后Handler发送信息进入MessageQuene,Looper根据先入先出原则处理MessageQuene中的信息,然后分配信息给Handler处理。

Handler的相关方法:

  • void handleMessage(Message msg):处理消息的方法,通常是用于被重写!
  • sendEmptyMessage(int what):发送空消息
  • sendEmptyMessageDelayed(int what,long delayMillis):指定延时多少毫秒后发送空信息
  • sendMessage(Message msg):立即发送信息
  • sendMessageDelayed(Message msg):指定延时多少毫秒后发送信息
  • final boolean hasMessage(int what):检查消息队列中是否包含what属性为指定值的消息 如果是参数为(int what,Object object):除了判断what属性,还需要判断Object属性是否为指定对象的消息

基于触碰的监听TouchListener

监听EditText

Async Task异步任务

相关概念

  • 多线程
    • 应用程序(Application):为了完成特定任务,用某种语言编写的一组指令集合(一组静态代码)
    • 进程(Process) :运行中的程序,系统调度与资源分配的一个独立单位,操作系统会为每个进程分配 一段内存空间,程序的依次动态执行,经理代码加载 -> 执行 -> 执行完毕的完整过程!
    • 线程(Thread):比进程更小的执行单元,每个进程可能有多条线程,线程需要放在一个进程中才能执行! 线程是由程序负责管理的!!!而进程则是由系统进行调度的!!!
    • 多线程概念(Multithreading):并行地执行多条指令,将CPU的时间片按照调度算法,分配给各个线程,实际上是分时执行的,只是这个切换的时间很短,用户感觉是同时而已!
  • 安卓会启动主线程,Main Thread,主要负责与UI相关的事件。我们使用Async Task实现进程更新。