前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Carson带你学Android:如何实现“再按一次退出程序”效果

Carson带你学Android:如何实现“再按一次退出程序”效果

作者头像
Carson.Ho
发布2022-03-24 18:39:22
3230
发布2022-03-24 18:39:22
举报
文章被收录于专栏:Android知识分享

前言

  • 各位程序猿是否经常会接到如下图的“再按一次退出程序”的小功能需求?
  • 该功能的实现方式有很多种,最常见的是:
    • 多线程Handler()
    • 计时器Timetask()
  • 但个人认为使用上述方法存在的问题是:
    • 杀猪并不需要用牛刀,大材小用
    • 实现步骤复杂
    • 消耗系统更多的资源
  • 今天,我将分享一种简单方便、不耗系统资源的方法来实现这个小功能

目录

1. 功能的意义

作为一名程序猿,理解功能的使用场景能有助于选择更好地方式进行功能开发:

  • 问:为什么要做一个让用户点两次才能退出的功能呢?这不是明显加大了用户退出的操作成本吗?
  • 答:对于移动使用场景,用户的注意力分散,容易出现误操作行为,通过点击两次才能退出是为了降低用户误操作退出的概率

2. 功能实现逻辑

一张流程图让你一目了然

3. 具体代码实现

  • 相信你已经很清楚这个功能的逻辑了,接下来,我们来看下如何通过代码实现
  • 具体实现的关键:通过在需要退出页面的Activity里复写onKeyDown()方法实现功能逻辑,从而实现该功能。

具体代码实现 MainActivity.java

代码语言:javascript
复制
 //声明一个long类型变量:用于存放上一点击“返回键”的时刻
  private long mExitTime;
  @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
    	//判断用户是否点击了“返回键”
        if (keyCode == KeyEvent.KEYCODE_BACK) {
        		//与上次点击返回键时刻作差
            if ((System.currentTimeMillis() - mExitTime) > 2000) {
            		//大于2000ms则认为是误操作,使用Toast进行提示
                Toast.makeText(this, "再按一次退出程序", Toast.LENGTH_SHORT).show();
                //并记录下本次点击“返回键”的时刻,以便下次进行判断
                mExitTime = System.currentTimeMillis();
            } else {
            		//小于2000ms则认为是用户确实希望退出程序-调用System.exit()方法进行退出
                System.exit(0);
            }
            return true;
     }
            return super.onKeyDown(keyCode, event);
    }

4.补充说明

如果你对于系统默认的Toast样式不满意,你可以进行样式的自定义

详情请点击这里

5. 总结

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 目录
  • 1. 功能的意义
  • 2. 功能实现逻辑
  • 3. 具体代码实现
  • 4.补充说明
  • 5. 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档