猿问

重写“后退”按钮,使其充当“主页”按钮。

重写“后退”按钮,使其充当“主页”按钮。

在按后退按钮时,我希望我的应用程序进入停止状态,而不是被破坏的状态。

在Android系统中博士它指出:

.不是所有的活动都有当背靠背被按下时被破坏的行为.当用户开始在“音乐”应用程序中播放音乐,然后按回键时,应用程序将重写正常的回退行为,防止播放机活动被破坏,并继续播放音乐,即使其活动不再可见

如何在自己的应用程序中复制此功能?

我想肯定有三种可能性.。

  1. 捕获后退按钮(如下所示),然后调用主按钮调用的任何方法。

    @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);}
  2. 捕获后按钮按下,然后欺骗一个主按钮按下。

  3. 捕获后退按钮,然后启动主屏幕的一个活动,有效地将我的应用程序的活动置于停止状态。

编辑:我了解服务,并正在应用程序中使用与此问题相关的服务。这个问题是关于将活动置于停止状态,而不是按下后退按钮时被破坏的状态。


慕婉清6462132
浏览 325回答 3
3回答

慕容森

大多数情况下,您需要创建一个服务在后台执行某些操作,并且您可以看到Activity简单地控制一下Service..(我相信音乐播放器的工作方式也是一样的,所以文档中的例子似乎有点误导。)如果是这样的话,那你的Activity能,会,可以finish和往常一样Service还会继续跑。一个更简单的方法是捕获Back按下按钮和呼叫MoveTaskToBack(真)详情如下:// 2.0 and above@Overridepublic void onBackPressed() {     moveTaskToBack(true);}// Before 2.0@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {     if (keyCode == KeyEvent.KEYCODE_BACK) {         moveTaskToBack(true);         return true;     }     return super.onKeyDown(keyCode, event);}我认为首选的选择应该是活动正常完成,并且能够重新创建自己,例如,如果需要从服务读取当前状态。但moveTaskToBack有时可以作为一种快速的替代方法。注:正如DaveUnderAndroid2.0所指出的,Android 2.0引入了一个新的onBackPressed方法,以及这些建议如何处理后退按钮。

慕码人2483693

使用以下代码:public void onBackPressed() {         Intent intent = new Intent();     intent.setAction(Intent.ACTION_MAIN);     intent.addCategory(Intent.CATEGORY_HOME);     startActivity(intent);}

泛舟湖上清波郎朗

如果你想抓住后面的按钮,看一看这篇文章发表在android开发者博客上。..它涵盖了在Android2.0中实现此操作的更简单的方法,以及在1.x和2.0上运行的应用程序实现此操作的最佳方法。但是,如果您的活动被停止,它仍然可能会被杀死,这取决于设备上的内存可用性。如果要在没有UI的情况下运行进程,则应创建Service. 有关服务的文档如下:服务没有可视化的用户界面,而是在后台运行了一段不确定的时间。例如,服务可能在用户处理其他事项时播放背景音乐,也可能通过网络获取数据或计算某些内容,并将结果提供给需要它的活动。这些似乎适合您的需求。
随时随地看视频慕课网APP

相关分类

Java
Android
我要回答