Android学习按键事件监听与Command模式
2012-05-29 14:58
465 查看
Android学习按键事件监听与Command模式
将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;
对请求排队或记录请求日志,以及支持可撤销的操作。
将请求被封装成一个对象,当向某对象提交请求时,使我们可以不用去知道被具体的请求的操作或者请求的接收者,
实现了动作的请求者对象和动作的执行者对象之间的解耦合。
适用性:
使用Command模式代替callback形式的回调应用;
在不同的时刻指定、排列和执行请求,动态的更改请求;
支持取消操作;
支持修改日志,保存请求执行过程以便恢复操作;
Command模式支持一组事务的调用操作。且易于增加扩展新事务;
(何为事务参考:http://book.51cto.com/art/201202/319377.htm)
[b]结构:[/b]
[b]说明:[/b]
Command:命令的封装者,声明命令执行的操作接口;
ConcreteCommand:使命令的具体接收者执行相应的动作;
Invoke:发出执行该命令的请求,存储具体命令执行者的抽象父类;
Receiver:实施与执行具体相关请求的具体操作,由命令对象创建者指定;
通过此图可以到此模式的核心:实现操作对象的调用Invoke与具体实施该操作的对象Receiver之间解耦,
是通过增加Command,将动作执行委托给Command来执行调用真正的动作执行者。
public interface OnClickListener {
void onClick(View v);
}
作用:Interface definition for a callback to be invoked when a view is clicked.
就是一个click事件的回调接口。
在需要响应click事件的View中,都需要注册一个相应的ClickListener来监听click事件发生时被调用。
[b]看一下面这段代码:Button控件[/b]
[b]看一下相应的这个结构:[/b]
这里面View就是Invoke,OnClickListener就是Command,MyActivity就是Receiver。
[b]执行过程如下:[/b]
可以看到这种方式的应用属于:
Command模式替换Callback函数形式的回调模型,让框架结构变得更清晰更灵活。
一 Command模式
[b]意图:[/b]将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;
对请求排队或记录请求日志,以及支持可撤销的操作。
将请求被封装成一个对象,当向某对象提交请求时,使我们可以不用去知道被具体的请求的操作或者请求的接收者,
实现了动作的请求者对象和动作的执行者对象之间的解耦合。
适用性:
使用Command模式代替callback形式的回调应用;
在不同的时刻指定、排列和执行请求,动态的更改请求;
支持取消操作;
支持修改日志,保存请求执行过程以便恢复操作;
Command模式支持一组事务的调用操作。且易于增加扩展新事务;
(何为事务参考:http://book.51cto.com/art/201202/319377.htm)
[b]结构:[/b]
[b]说明:[/b]
Command:命令的封装者,声明命令执行的操作接口;
ConcreteCommand:使命令的具体接收者执行相应的动作;
Invoke:发出执行该命令的请求,存储具体命令执行者的抽象父类;
Receiver:实施与执行具体相关请求的具体操作,由命令对象创建者指定;
通过此图可以到此模式的核心:实现操作对象的调用Invoke与具体实施该操作的对象Receiver之间解耦,
是通过增加Command,将动作执行委托给Command来执行调用真正的动作执行者。
二 Android中OnClickListener
在View类中:public interface OnClickListener {
void onClick(View v);
}
作用:Interface definition for a callback to be invoked when a view is clicked.
就是一个click事件的回调接口。
在需要响应click事件的View中,都需要注册一个相应的ClickListener来监听click事件发生时被调用。
[b]看一下面这段代码:Button控件[/b]
public class MyActivity extends Activity { protected void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.content_layout_id); final Button button = (Button) findViewById(R.id.button_id); //注册click事件监听器 button.setOnClickListener(new View.BtnOnClickListener()); } private class BtnOnClickListener extends OnClickListener{ public void onClick(View v) { // Perform action on click } } }
[b]看一下相应的这个结构:[/b]
这里面View就是Invoke,OnClickListener就是Command,MyActivity就是Receiver。
[b]执行过程如下:[/b]
可以看到这种方式的应用属于:
Command模式替换Callback函数形式的回调模型,让框架结构变得更清晰更灵活。
相关文章推荐
- Android学习按键事件监听与Command模式
- Android学习按键事件监听与Command模式
- 【Android开发学习30】动态创建多个按钮,并给每个按键添加监听事件
- android 中如何监听按键的长按事件
- Android监听蓝牙耳机的按键事件
- Android基础学习笔记---事件监听(一)
- Android如何监听蓝牙耳机的按键事件
- android应用开发实践一:Activity与控件布局,事件监听之学习实践
- 安卓(Android) 监听按键长按事件
- Android通过Intent.ACTION_CLOSE_SYSTEM_DIALOGS监听Home按键事件
- Android如何监听蓝牙耳机的按键事件
- 【android学习】安卓设备实现触摸事件的监听,跨进程事件注入
- 2014-10-27Android学习------自定义widget的监听事件的实现-----城市列表应用程序
- Android 监听Home键按键事件
- 2014-10-27Android学习------布局处理(七)------26个字母的布局列表的监听事件处理-----城市列表应用程序
- android学习进行时----1.1.2UI部分Button使用-事件监听
- Android中监听点击事件----学习笔记
- android客户端学习-事件监听的三种实现方式
- 我的Android应用学习笔记(三)回调事件处理和监听事件处理
- Android开发学习笔记:为动态添加的EditText控件绑定值改变监听事件