开源中国 OsChina Android 客户端源码分析(10)双击退出程序
在源码中,火蚁完全封装了 双击退出程序的功能 : DoubleClickExitHelper类 该类的源码分析如下: 1 构造函数中传入了 设备上下文,实现退出功能的界面,完成消息处理器的初始化;既然要有提示条,那么也需要一个Toast对象。 2 既然完全封装,那么 我们需要将 按键的事件及按键码传进去,因为界面重写的onKeyDown 事件需要返回一个boolean值,那么在 DoubleClickExitHelper类中也自定义了一个返回布尔值的 onKeyDown 函数。 3 onKeyDown 函数: 3.1 如果不是按下键,则返回false;isOnKeyBacking 为全局变量,初始化 DoubleClickExitHelper对象时,默认值为false,第一次点击的时候,其值为false,则将 isOnKeyBacking 置为true,完成Toast的初始化,利用handler.post(runnable)延时执行一个业务——如果Toast 还在显示 直接手动关闭。当第二次点击的时候 isOnKeyBacking 已经为true,这个时候存在一种可能: runnable 延时执行的业务还没有执行(从源码中我们可以看到,这个时间是2秒,也就是说2秒内再次点击了返回键的话),我们可以先去掉延时要执行的任务,然后直接关闭Toast,在执行关闭界面的操作等等