============ 2, android中的back键处理

很多网友不明白,如何在Android平台上捕获Back键的事件。

Back键是手机上的后退键,一般的软件不捕获相关信息可能导致你的程序被切换到后台,而回到桌面的尴尬情况,在Android上有两种方法来获取该按钮的事件。

1.直接获取按钮按下事件,此方法兼容Android 1.0到Android 2.1 也是常规方法,直接重写Activity的onKeyDown方法即可,代码如下:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event)  {
    if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { //按下的如果是BACK,同时没有重复
       Toast.makeText(ml78.this,"魔力去吧Back键测试",1).show();
        return true;
    }

return super.onKeyDown(keyCode, event);
}

2、重写onBackPressed方法

而对于Android 2.0开始又多出了一种新的方法,对于Activity 可以单独获取Back键的按下事件,直接重写onBackPressed方法即可,代码如下

@Override
public void onBackPressed() {
// 这里处理逻辑代码,大家注意:该方法仅适用于2.0或更新版的sdk
return;
}

此外,关于Android home键和back键区别

back键
Android的程序无需刻意的去退出,当你一按下手机的back键的时候,系统会默认调用程序栈中最上层Activity的Destroy()方法来,销毁当前Activity。当此Activity又被其它Activity启动起来的时候,会重新调用OnCreate()方法进行创建,当栈中所有Activity都弹出结束后,应用也就随之结束了.如果说程序中存在service之类的,则可以在恰当的位置监听处理下也就可以了.

home键
Android程序的隐藏,当你按下手机的Home键的时候,系统会默认调用程序栈中最上层Activity的stop()方法,然后整个应用程序都会被隐藏起来,当你再次点击手机桌面上应用程序图标时,系统会调用最上层Activity的OnResume()方法,此时不会重新打开程序,而是直接进入,会直接显示程序栈中最上层的Activity.

back键默认把当前Activity给finish,home键只是把Activity给onStop.

实现按Home键时隐藏程序的效果:
1:Android 2.0之前需要监听按键事件,进行判断是不是按下了back键
2:Android 2.0之后系统提供了一个onBackPressed()方法,这个方法就是专门用来监听back键事件的,所以只需重写onBackPressed()方法即可

?
@Override
public void onBackPressed() { 
    //实现Home键效果 
    //super.onBackPressed();这句话一定要注掉,不然又去调用默认的back处理方式了 
    Intent i= new Intent(Intent.ACTION_MAIN); 
    i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    i.addCategory(Intent.CATEGORY_HOME); 
    startActivity(i);  
}

退出应用程序的实现:可以自己写个方法,例如:

?
public void exitProgrames(){ 
    Intent startMain = new Intent(Intent.ACTION_MAIN); 
    startMain.addCategory(Intent.CATEGORY_HOME); 
    startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    startActivity(startMain); 
    android.os.Process.killProcess(android.os.Process.myPid()); 
}
注意:需要添加权限:

=============== 1, Android中OnkeyDown事件和OnBackPressed方法区别、兼容、使用

在Android平台上捕获Back键的事件,Back键是手机上的后退键,一般的软件不捕获相关信息可能导致你的程序被切换到后台,而回到桌面的尴尬情况,在Android上有两种方法来获取该按钮的事件。

1.直接获取按钮按下事件,此方法兼容Android 1.0到Android 2.1 也是常规方法,直接重写Activity的onKeyDown方法即可,代码如下:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event)  {
    if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { //按下的如果是BACK,同时没有重复
       Toast.makeText(ml78.this,"返回键Back键测试",1).show();
        return true;
    }

return super.onKeyDown(keyCode, event);
}

而对于Android 2.0开始又多出了一种新的方法,对于Activity 可以单独获取Back键的按下事件,直接重写onBackPressed方法即可,代码如下

@Override
public void onBackPressed() {
  // 这里处理逻辑代码,大家注意:该方法仅适用于2.0或更新版的sdk
return;
}

同时还有一种情况,就是在以前开发的程序中使用的是onKeyDown方法,但是后续版本为了兼容OnBackPressed方法。就需要两者之间进行嵌套。具体的方法如下:

@Override
   public boolean onKeyDown(int keyCode, KeyEvent event) {
   // 是否触发按键为back键
  if (keyCode == KeyEvent.KEYCODE_BACK) {
   onBackPressed();
   return true;
   } else {// 如果不是back键正常响应
   return super.onKeyDown(keyCode, event);
   }
  }

利用时间差方法完成两次返回键退出,防止误操作。

// 退出时间

private long currentBackPressedTime = 0;

// 退出间隔

private static finalint BACK_PRESSED_INTERVAL = 2000;

//重写onBackPressed()方法,继承自退出的方法

@Override

publicvoid onBackPressed() {

// 判断时间间隔

if (System.currentTimeMillis()- currentBackPressedTime > BACK_PRESSED_INTERVAL) {

currentBackPressedTime = System.currentTimeMillis();

Toast.makeText(this, "再按一次返回键退出程序", Toast.LENGTH_SHORT).show();

else {

// 退出

finish();

}

}

转载于:https://www.cnblogs.com/awkflf11/p/5421496.html

基础_ _返回键back相关推荐

  1. 安卓10侧边返回_向返回键说拜拜,安卓10向全面屏手势继续迈进

    原标题:向返回键说拜拜,安卓10向全面屏手势继续迈进 [PConline 资讯]全面屏在手机的应用已经愈发常见,更大的屏幕挤占了原本留给实体按键排布的位置,全面屏手势也就应运而生.苹果手机在iPhon ...

  2. Android Native APP开发笔记:双击返回键退出应用单击返回键返回桌面

    文章目录 目的 基础说明 双击返回键退出应用 单击返回键回到桌面 总结 目的 双击返回键退出应用 很早之前就是Android中非常常见的一种功能,而目前好多安卓应用为了应用常驻都改为使用 单击返回键返 ...

  3. 苹果手机home键在哪里_苹果手机为什么没有返回键?原来隐藏着更好的方法,涨知识了...

    手机主要分为苹果和安卓两种,安卓手机的用户,如果突然换用了苹果手机,就会发现很难适应.没有返回键.后台键的手机,仅为一个Home键就可以操作全部. 一.不用返回键原因 苹果发布的第一代产品就没有设计返 ...

  4. 苹果手机home键在哪里_苹果手机为什么没有返回键? 原来隐藏着更好的方法, 涨知识了...

    阅读本文前,请您先点击上面的蓝色字体"财经史",再点击"关注",这样您就可以继续免费收到最新文章了.每天都有分享.完全是免费订阅,请放心关注. 不知道大家和我是 ...

  5. 华为手机主界面的返回键怎么调出来_主按钮怎么变回来 华为手机的返回键怎么设置?...

    3dmax主工具栏按钮怎么变小了?在菜单栏选择customizePreferences,在General选项卡里找到UI Display,取消或勾选Use Large Toolbar Buttons, ...

  6. 华为怎么显示返回按键_苹果手机为何一直没有“返回键”?其实乔布斯生前就说出了答案!...

    阅读本文前,请您先点击上面的蓝色字体"自媒创业",再点击"关注",这样您就可以继续免费收到最新文章了.每天都有分享.完全是免费订阅,请放心关注 手机市场近几年的 ...

  7. 安卓10侧边返回_安卓10.0内测版现新操作手势:取消返回键、全靠Home胶囊完成...

    ­ 自iPhone X移除实体Home键后,手势操作在iOS和Android上便加速了普及步伐.其中,谷歌在Android 9 Pie上引入了原生的手势,当然,以小米.华为等为代表的OEM厂商也自订了 ...

  8. 安卓10侧边返回_安卓10.0内测版出现新版手势操作:取消返回键、全靠Home胶囊完成...

    自iPhone X移除实体Home键后,手势操作在iOS和Android上便加速了普及步伐.其中,谷歌在Android 9 Pie上引入了原生的手势,当然,以小米.华为等为代表的OEM厂商也自订了特色 ...

  9. 华为手机主界面的返回键怎么调出来_华为手机返回键怎么调整 怎么设置返回键...

    新买的手机不管怎么流畅,一旦用的时间长了之后不清理内存,手机就会越来越卡,为避免手机速度变慢,有必要及时清理,让软件缓存对手机使用不造成影响,.那么下面就让我们来看一下华为手机返回键怎么调整?华为手机 ...

最新文章

  1. VASP计算光学性质
  2. 初二模拟赛总结(2019.8.7)
  3. 具有关联映射的Hibernate Composite ID
  4. Vue3过渡动画实现
  5. HTML5网络科技企业网页模板
  6. mysql 横纵表转化_数据库MySQL横纵表相互转化操作实现方法
  7. linux安装mysql.rpm软件包_Linux环境安装MySQL数据库(RPM格式的软件包)
  8. eclipse和maven
  9. OLAP-presto-大数据Week13-DAY-presto
  10. Useful SQL script
  11. 性能测试之工具对比-ngrinder jmeter loadunner及ngrinder安装使用方法
  12. 旅游后台管理系列——使用maven tomcat插件启动web工程
  13. java lbs云_LBSyuncunchudemo 一个使用百度地图API,利用LBS云存储云检索的代码,可以测试 。 Java Develop 238万源代码下载- www.pudn.com...
  14. po是什么意思java_PO/VO/DAO/BO/POJO是什么(JAVA 的解釋)
  15. PS制作个人LOGO技术总结
  16. Win11玩红警2突然就卡住不动?
  17. CodeForces - 581B - Luxurious Houses 逆序处理水
  18. case when then else end 语句遇上sum或count等统计函数的注意事项(列转行)
  19. Java面向对象基础呕心沥血三千字
  20. 滴滴为什么选择与章鱼哥APP合作?

热门文章

  1. 从键盘上输入5个学生的分数,求平均分数,最高分数,最低分数,并统计高于平均分数的人数。
  2. awd-php,awd平台搭建
  3. drools_03_dialect
  4. 最全Pycharm教程(41)——Pycharm扩展功能之便签注释
  5. Docket学习2《docker安装nginx、安装tomcat、安装Centos7、容器导入导出、镜像上传到仓库》
  6. latex 作者名上的邮件符号_Latex作者单位的写法—AND 首页脚注
  7. android回声消除方案,android系统通话中回声消除的实现.doc
  8. 关于在SNPE平台上进行ONNX模型转换DLC模型
  9. 企业怎么做软文营销,软文撰写的技巧
  10. 联合国工作机会,面向中国!!!