Ownsight

?找回密码
?立即注册
搜索
热搜: 活动 交友 discuz
查看: 875|回复: 0
打印 上一主题 下一主题

android back 键 拦截

[复制链接]

803

主题

903

帖子

3201

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3201
跳转到指定楼层
楼主
发表于 2018-1-13 06:42:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

转自:http://blog.csdn.net/lyjit/article/details/51597160

Back键是手机上的后退键,在Android上有两种方法来获取该按钮的事件。
**

一:如何捕获Back按键事件

**

1.直接获取按钮按下事件,直接重写Activity的onKeyDown方法即可,代码如下:

@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event)??{? ? if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { //按下的如果是BACK,同时没有重复? ?? ?? ???Toast.makeText("lyj_test","now_is_back_event",1).show();? ?? ?? ?? ?return true;? ? }? ?? ? return super.onKeyDown(keyCode, event);}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

2、重写onBackPressed方法

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

@Overridepublic void onBackPressed() {? ? // 这里处理逻辑代码,大家注意:该方法仅适用于2.0或更新版的sdk? ? return;}
  • 1
  • 2
  • 3
  • 4
  • 5

**

二: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和BACK按键Activity的生命周期是怎样的:
HOME键的执行顺序:onPause->onStop->onRestart->onStart->onResume
BACK键的顺序: onPause->onStop->onDestroy->onCreate->onStart->onResume
onPause不要做太耗时的工作

三:按Back键实现按Home键时的效果

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

@Overridepublic void onBackPressed() {? ???//实现Home键效果 ? ? //super.onBackPressed();这句话一定要注掉,不然又去调用默认的back处理方式 ? ? Intent intent= new Intent(Intent.ACTION_MAIN);? ???intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);? ???intent.addCategory(Intent.CATEGORY_HOME);? ???startActivity(intent);??}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

另外,如果想退出应用程序的话,可以自己写个方法,如下:

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()); }
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表