当前位置: 首页 > news >正文

Android两次后退键退出

转载请注明出处:http://blog.csdn.net/javacattle/article/details/41964045

仅仅要在 *.Java 文件里加入就可以

private int back = 0;

//===============back两次退出=====================
  @Override
  public boolean onCreateOptionsMenu(Menu menu) {//必要的改变
   menu.add(0, 2, 2, "退出");
   return super.onCreateOptionsMenu(menu);
  }
 

  @Override
  public boolean onOptionsItemSelected(MenuItem item) {
   switch (item.getItemId()) {
   case 2:
    Myback();
    break;
   }
   return super.onOptionsItemSelected(item);
  }

 
  @Override
  public boolean onKeyDown(int keyCode, KeyEvent event) {//两次back退出
   if (keyCode == KeyEvent.KEYCODE_BACK) {
    back++;
    switch (back) {
    case 1:
     Toast.makeText(MainActivity.this, "再按一次退出",
       Toast.LENGTH_SHORT).show();
     break;
    case 2:
     back = 0;// 初始化back值
     Myback();
     break;
    }
    return true;// 设置成false让back失效 ,true表示 不失效
   } else {
    return super.onKeyDown(keyCode, event);
   }
  }

  public void Myback() { // 关闭程序
   MainActivity.this.finish();
   android.os.Process.killProcess(android.os.Process.myPid());// 关闭进程
  }


//因为网友的提醒(@菜鸟_晧 @貌似掉线)。菜鸟级别的我又又一次改动了代码,而且能够非常好的使用,对于他们的建议表示感谢,改动后的代码:
private int tDifference = 2000;//等待的时间
private boolean isExit = false;   //状态
private Timer mTicker = null;//定义Timer时间器
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {// 两次back退出
if (keyCode == KeyEvent.KEYCODE_BACK) {
Myback();
return true;
} else {
return super.onKeyDown(keyCode, event);
}

}


public void Myback() { // 关闭程序
if(isExit){
MainActivity.this.finish();
android.os.Process.killProcess(android.os.Process.myPid());// 关闭进程
}else{
Toast.makeText(MainActivity.this, "再按一次退出", Toast.LENGTH_SHORT).show();
isExit = !isExit;
if(null == mTicker){
mTicker = new Timer();
}
mTicker.schedule(new TimerTask() {
@Override
public void run() {//改变标识
isExit = false;

}
},tDifference );
}
}


PS:android上本人菜鸟一枚,不喜勿喷

相关文章:

  • 敏捷开发与瀑布式开发的区别
  • [转] Webpack的devtool和source maps
  • 数据中心资源向AWS迁移的四大挑战
  • 区块链概况:什么是区块链
  • 二进制数字系统
  • js正则,这点儿就够用了
  • Vue2.0史上最全入坑教程(中)—— 脚手架代码详解
  • “美云启航 智数未来”——美云智数产品发布会圆满召开
  • ServletContext两个Servlet传值学习笔记
  • WPF 自定义TabControl控件样式
  • kvmgt-kernel 实现GPU虚拟化
  • 深入理解-CSS内联元素之font-size
  • 我为什么要关心区块链?概述和接纳
  • MySQL 5.7.20在RedHat 7.2上通过RPM包安装
  • 面试题3:数组中重复的数字,不能修改原数组
  • 0基础学习移动端适配
  • CSS居中完全指南——构建CSS居中决策树
  • iOS仿今日头条、壁纸应用、筛选分类、三方微博、颜色填充等源码
  • Markdown 语法简单说明
  • mockjs让前端开发独立于后端
  • Webpack 4 学习01(基础配置)
  • 大主子表关联的性能优化方法
  • 仿天猫超市收藏抛物线动画工具库
  • 基于遗传算法的优化问题求解
  • 浅谈Kotlin实战篇之自定义View图片圆角简单应用(一)
  • 扫描识别控件Dynamic Web TWAIN v12.2发布,改进SSL证书
  • 使用权重正则化较少模型过拟合
  • 腾讯优测优分享 | 你是否体验过Android手机插入耳机后仍外放的尴尬?
  • 一起来学SpringBoot | 第三篇:SpringBoot日志配置
  • ​​快速排序(四)——挖坑法,前后指针法与非递归
  • ​软考-高级-信息系统项目管理师教程 第四版【第23章-组织通用管理-思维导图】​
  • ()、[]、{}、(())、[[]]命令替换
  • (3)Dubbo启动时qos-server can not bind localhost22222错误解决
  • (delphi11最新学习资料) Object Pascal 学习笔记---第2章第五节(日期和时间)
  • (附源码)基于SpringBoot和Vue的厨到家服务平台的设计与实现 毕业设计 063133
  • (附源码)计算机毕业设计SSM智慧停车系统
  • (免费领源码)Java#Springboot#mysql农产品销售管理系统47627-计算机毕业设计项目选题推荐
  • (十) 初识 Docker file
  • ***汇编语言 实验16 编写包含多个功能子程序的中断例程
  • .NET “底层”异步编程模式——异步编程模型(Asynchronous Programming Model,APM)...
  • .net on S60 ---- Net60 1.1发布 支持VS2008以及新的特性
  • .NET 中各种混淆(Obfuscation)的含义、原理、实际效果和不同级别的差异(使用 SmartAssembly)
  • .NET/C# 使用 SpanT 为字符串处理提升性能
  • .Net下的签名与混淆
  • .sh 的运行
  • /etc/fstab和/etc/mtab的区别
  • @RequestMapping-占位符映射
  • [Android学习笔记]ScrollView的使用
  • [Bada开发]初步入口函数介绍
  • [BZOJ 4598][Sdoi2016]模式字符串
  • [BZOJ] 2006: [NOI2010]超级钢琴
  • [C++提高编程](三):STL初识
  • [ESP32] 编码旋钮驱动
  • [leetcode]_String to Integer (atoi)
  • [MFC] MFC消息机制的补充