点击两次退出程序

preview
共44个文件
class:12个
xml:10个
png:9个
需积分: 0 1 下载量 154 浏览量 更新于2015-07-10 收藏 2.26MB RAR 举报
在Android应用开发中,"点击两次退出程序"是一种常见的安全设计策略,它的目的是防止用户意外地关闭应用程序。这种设计通常会在用户首次点击退出按钮时显示一个提示,要求用户再次确认退出操作,以避免误触导致的数据丢失或中断。在本案例中,实现这一功能主要依赖于Android的消息处理机制——Handler,以及Boolean变量的管理和计时器。 我们需要理解Handler的基本原理。Handler是Android中的一个关键组件,它与Looper和Message协同工作,用于在主线程中处理来自其他线程的消息。当我们发送一个Message到Handler时,这个Message会被添加到Looper的消息队列中,然后Looper会按照顺序取出这些消息并分发给相应的Handler进行处理。 实现"点击两次退出程序"的具体步骤如下: 1. **定义全局变量**:声明一个全局的Boolean变量`isExit`,初始值为`false`。这个变量用于记录用户是否已经点击了一次退出按钮。 2. **设置点击事件**:在退出按钮的点击事件中,当用户第一次点击时,将`isExit`设置为`true`,并显示一个Toast或者Dialog提示用户再次点击以确认退出。同时,启动一个Handler的延时消息,例如设定为2秒钟后执行。在这段时间内,如果用户再次点击退出按钮,那么就不再等待,直接执行退出操作。 3. **创建Handler**:创建一个内部类Handler,重写其`handleMessage(Message msg)`方法。在这个方法里,我们将检查`isExit`的值。如果`isExit`为`true`,则调用`finish()`方法结束当前Activity,从而退出程序。如果用户在2秒内没有再次点击,那么延时消息执行时`isExit`仍为`true`,因此程序会退出。 4. **发送延时消息**:在点击事件中,使用Handler的`sendEmptyMessageDelayed(int what, long delayMillis)`方法发送一个延时消息。`what`参数用于标识消息,`delayMillis`是延迟的时间(单位为毫秒)。 5. **取消延时消息**:在第二次点击事件中,如果用户确认退出,我们需要先取消之前发送的延时消息,防止其在后续执行。这可以通过调用Handler的`removeCallbacksAndMessages(null)`来实现,它会移除所有待处理的消息和回调。 这样,我们就实现了点击两次退出程序的功能。这个过程的关键在于Handler的使用,它提供了在特定时间点执行特定操作的能力,以及通过改变和检查`isExit`变量来跟踪用户的操作。这样的设计既增加了用户体验,也保证了程序的安全性。在实际的Android开发中,这样的设计模式被广泛应用在各种需要用户确认的操作中。