【问题标题】:KeyCode, KeyEvent Not workingKeyCode,KeyEvent 不工作
【发布时间】:2015-08-10 21:24:56
【问题描述】:

如何停止在后台运行的服务。 有没有办法使用返回和主页按钮来做到这一点

我曾尝试使用按键事件来完成此操作,但仍然无法正常工作。在这里你可以检查我的代码...

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if ((keyCode == KeyEvent.KEYCODE_HOME)) {          
        stopBackgroundAudio();// background services 
        return true;
    }
    if ((keyCode == KeyEvent.KEYCODE_BACK)) {           
        stopBackgroundAudio();
        return true;
    }
    if ((keyCode == KeyEvent.KEYCODE_MENU)) {            
        stopBackgroundAudio();
        return true;
    }
     return super.onKeyDown(keyCode, event);

}

帮我解决这个问题或建议我其他停止服务的选项?

【问题讨论】:

标签: android


【解决方案1】:

Back 和 home 不使用该 API。后退键通过 backButtonPressed 函数进入,您可以覆盖该函数。主页按钮永远不会出现 - 您的应用只是被推到后台。

另外,如果您希望音频在您进入背景时停止,只需在 onPause 中停止即可。

【讨论】:

  • 这不会解决问题,因为在从一个活动移动到另一个活动时也会调用 onPause
  • 没错,但他没有说明他需要那个。
  • 对,我的朋友,但他明确指出他只想在主页按下或返回按钮时停止服务。
【解决方案2】:
@Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {

        switch(keyCode)
        {
        case KeyEvent.KEYCODE_HOME:
        stopBackgroundAudio();// background services 
            return true;
        case KeyEvent.KEYCODE_BACK:
         stopBackgroundAudio();
            return true;
        case KeyEvent.KEYCODE_MENU:
       stopBackgroundAudio();
            return true;


        }

       return super.onKeyDown(keyCode, event);
    }

我不确定你的服务是绑定服务还是取消绑定服务,如果它是取消绑定服务,则可能是一个问题,如果它是绑定服务,则没有正确的实现!

【讨论】:

  • 嘿使用 return super.onKeyDown(keyCode, event);代替 return false;答案已更新
猜你喜欢
  • 1970-01-01
  • 2014-09-25
  • 2013-01-20
  • 2011-05-19
  • 2013-02-22
  • 1970-01-01
  • 2012-11-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多