码迷,mamicode.com
首页 > 移动开发 > 详细

开源中国 OsChina Android 客户端源码分析(10)双击退出程序

时间:2015-11-02 21:28:40      阅读:238      评论:0      收藏:0      [点我收藏+]

标签:

在源码中,火蚁完全封装了  双击退出程序的功能 : DoubleClickExitHelper类

该类的源码分析如下:

1  构造函数中传入了 设备上下文,实现退出功能的界面,完成消息处理器的初始化;既然要有提示条,那么也需要一个Toast对象。

2 既然完全封装,那么 我们需要将 按键的事件及按键码传进去,因为界面重写的onKeyDown 事件需要返回一个boolean值,那么在DoubleClickExitHelper类中也自定义了一个返回布尔值的onKeyDown 函数。 

3onKeyDown 函数:

3.1 如果不是按下键,则返回false;isOnKeyBacking 为全局变量,初始化DoubleClickExitHelper对象时,默认值为false,第一次点击的时候,其值为false,则将isOnKeyBacking 置为true,完成Toast的初始化,利用handler.post(runnable)延时执行一个业务——如果Toast 还在显示 直接手动关闭。当第二次点击的时候isOnKeyBacking 已经为true,这个时候存在一种可能:runnable 延时执行的业务还没有执行(从源码中我们可以看到,这个时间是2秒,也就是说2秒内再次点击了返回键的话),我们可以先去掉延时要执行的任务,然后直接关闭Toast,在执行关闭界面的操作等等。执行完后返回true,代表响应了KeyDown事件。

3.2 此方法的优势除了封装性外,就是存在手动关闭Toast的情况,一般在用的时候,显示时间不是short 就是 long ,但是在关闭界面后,当Toast显示后 在关闭时找不到设备上下文的话,就存在着 程序退出了,但那个Toast 确一直显示着,本人曾经遇到过这个问题。

    阅读代码,是一种良好的习惯,各位坚持!


开源中国 OsChina Android 客户端源码分析(10)双击退出程序

标签:

原文地址:http://my.oschina.net/jixin/blog/525020

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!