Android不允许在其他线程中直接更新界面组件。需要借助Handler对象间接实现。
安卓提供了两种方式的事件处理——回调与监听。
1.监听
想让一个控件响应单击事件,那么需要做两步。1.编写监听器,记为类A,实现单击事件监听器接口;2.对控件设置它的监听器,与类A关联起来。
android.os.Bundle
保存从String类型到各种类型的映射。
void android.os.BaseBundle.putString(String key, String value)
放入String类型的键值对。
String android.os.BaseBundle.getString(String key)
返回Bundle中设置的与key对应的value。
android.os.Handler
处理消息的类。
android.os.Handler(Looper looper)
构造函数。
void android.os.Handler.handleMessage(Message msg)
定义了收到消息后要做哪些事。该方法需要被重写。
boolean android.os.Handler.sendMessage(Message msg)
将一个消息推送到消息队列的尾部。.
boolean android.os.Handler#postDelayed(Runnable r, long delayMillis)
以delayMillis为周期,周期性地调用r的run()方法。
android.os.Message
用于发送给Handler处理的消息。
Bundle android.os.Message.getData()
获取消息中的Bundle.
2.sample
在输入框内输入123,点击button,左上方的TextView会显示输入框内的内容。
3.常见问答
问:handler、looper与messageQueue的联系与区别?
答:looper以死循环的形式从messageQueue里面拿取消息,交给handler处理。looper的构造函数中会自动创建并关联一个messageQueue。