2 woshiwoxingfu woshiwoxingfu 于 2012.09.24 14:34 提问

Android:重写后退按钮,使它可以像home键

当点击后退按钮,我希望我的应用程序停止,而不是退出。
在android文档中是这样说的:
当后退被按下的时候,并不是所有的activity都有退出的行为。当使用者开始在Music应用程序播放音乐的时候,然后按BACK,应用程序重写了正常的后退行为,阻止播放activity退出,然后继续播放音乐,尽管它的activity不会再看见。
我应该怎么在我自己的应用程序复制这个功能?
我认为这有三个可能性。。。
捕获后退按钮按下的事件(像下边一样)然后调用home键调用的任何方法。

@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {
   if ((keyCode== KeyEvent.KEYCODE_BACK)) {
       Log.d(this.getClass().getName(), "back button pressed");
   }
   return super.onKeyDown(keyCode, event);}

捕获后退按钮的点击事件然后做一个虚假的home键的点击。
捕获后退按钮的点击事件,然后home视图的activity,有效的把我的应用程序的activity放到了停止状态。

2个回答

yizhenbeifeng
yizhenbeifeng   2012.09.24 15:27
已采纳

大多数情况下,你需要创建一个Service来在后台执行一些事情,而你的可见的Activity仅仅是控制这个Service(我确定音乐播放器是同样的方式工作,所以文档中的例子有点不符合)。如果是这样的话,那么你的Activity可以像往常一样完成,而且Service仍然会运行。
一个更简单的方法是捕获Back按钮的点击事件然后调用moveTaskToBack(true) ,就像下边这样:

@Overridepublic
 boolean onKeyDown(int keyCode, KeyEvent event) {
   if (keyCode== KeyEvent.KEYCODE_BACK) {
        moveTaskToBack(true);

       return true;
   }
   return super.onKeyDown(keyCode, event);
}

我认为首选的应该是Activity可以正常的完成,可以重建自己本身,例如如果需要的话从服务器读取当前的状态。但是有时候moveTaskToBack可以作为替代方案。
注意:在android2.0的介绍中Dave介绍了一个新的 onBackPressed 方法,和关于如何运用Back按钮的一些推荐。

liangchichexin
liangchichexin   2012.09.24 16:03

试试将定义在android.app.activity类中的 onBackPressed()写空。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
android中的后退键——onBackPressed()的使用
<br />多网友不明白如何在Android平台上捕获Back键的事件,Back键是手机上的后退键,一般的软件不捕获相关信息可能导致你的程序被切换到后台,而回到桌面的尴尬情况,在Android上有两种方法来获取该按钮的事件。<br />  1.直接获取按钮按下事件,此方法兼容Android 1.0到Android 2.1 也是常规方法,直接重写Activity的onKeyDown方法即可,代码如下:<br />@Override<br />public boolean onKeyDown(int keyCo
Android手机Home键/Back回退键事件
android的手机的back键默认行为是finish处于前台的Activity的即Activity的状态为Destroy状态,再次启动该Activity是从onCreate开始的。 而Home键默认是stop前台的Activity即状态为onStop而不是Destroy,若再次启动它,则是从OnResume开始的,即会保持上次Activityd的状态。 back键也有例外的,按back键不会关闭
使Android Home键,Power键等按钮失效
通常情况下,用户按Home键,Power键,Search 键,会退出当前应用的运行,这对于某些情况会造成问题,这个手机端程序需要一旦运行后,只有管理员或是用户登出时,才可以主动退出运行,其它情况不能退出运行,也就是除了运行门票系统手机端程序外,普通工作人员无法退出程序运行(即使时重启后)。解决方法是重写一个Dummy的Home Screen activity ,用户按Home键时,还是回到门票系统
Android中Back键实现Home键功能
1、先说一下Back键和Home键的区别 Back键:当按下Back键的时候,系统默认调用Activity的onDestory方法,销毁当前的Activity。这个Activity再次启动的时候,重新调用onCreate方法创建。 Home键:当按下Home键的时候,系统默认调用Activity的onStop方法,整个应用程序会被隐藏起来;再次进入应用程序时,系统自动调用onResume方法,
重写Android返回键
@Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { //点击完返回键,执行的动作 ((MyApp) getApplication()).tag = 0; Intent intent = new I
安卓重写系统返回键,以及如何监听弹出框的系统返回键
@Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK ) { //这里写需要重写的方法 return false; } ret
关于 android app 返回键模拟 home键 功能的介绍_仿QQ返回键 又重新回到当前界面_锁屏状态 又要重新唤醒
最近有朋友问我 一些 关于 android 应用 退出了界面或应用 后 ,又要回到应用或者某个界面或者退出后且有在锁屏状态 又要重新唤醒(讲分 第一篇,第二篇 分享给大家) : 在这里分享想我的做法,先讲第一篇,模仿 home键功能 首先,先讲下 Android home键和back键区别 back键 Android的程序无需刻意 的去退出,当你一按下手机的back键的时候,系统会
Android 改写返回键事件监听,使得back键功能类似home键,让Acitivty退至后台时不被系统销毁
现在很多程序要求back键不是退出程序而是像home键一样让Acitivty退至后台时不被系统销毁,查到的资料大多说都是继承activity的没有继承TabActivity, TabActivity和activity不能一样处理,废话不多说了上代码。 继承activity的 /** * 返回监听 */ public boolean onKeyDown(int keyCode
Android重写菜单增加系统自带返回键
条件:当前的项目必须引用了
Android原生代码是怎么实现返回键和Home键功能的呢?
最近要修改SystemUI,所以要看原生的代码,SystemUI包括什么内容呢? 锁屏界面 通知 壁纸管理 截屏 状态栏目+NavigationBar(导航栏:返回键,Home键,最近任务) 由于我看的代码是MTK修改过的,我也不知道是不是原生的,反正大同小异吧。原生系统的代码我也有,待会去看一下就知道了。 这一篇文章的主题是返回键和Home键的功能实现是怎么样的。 首先,这个是Na...