一个服务可以检测到返回按钮的按下吗?
正如标题所说的那样?我已经做了很多谷歌搜索,但是找不到确定的答案。也没有办法去做吗?
一个服务能检测到后退按钮的按下吗?
很抱歉,不行。如果你有一个处于前台的活动,该活动可以检测到后退按钮的按下。如果你没有一个处于前台的活动,则后退按钮与你的代码无关。
不是这样的。返回按钮是在活动级别上管理的,而服务与此级别完全分离。
您唯一的选择是将后退操作从您的活动传递到您的服务。但是,您需要确保您的活动在前台运行。
editText.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
Log.d("TAG", "onKey() called with: " + "v = [" + v + "], keyCode = [" + keyCode + "], event = [" + event + "]");
if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction()== KeyEvent.ACTION_UP){
onBackPress();
}
return false;
}
});
WindowManager#addView()
显示窗口的代码,如果该窗口获得焦点,则KeyEvent.KEYCODE_BACK
事件将传递给窗口的根视图,我假设?这完全取决于哪个窗口当前拥有焦点......而不是您使用的组件类型。当然,除非您正在重新编写Facebook Chatheads,否则99%的时间您的服务将不会向屏幕显示自己的窗口,因此一般情况下服务将无法接收到返回按钮单击事件。 - Alex Lockwoodsetonkeylistener
,但无法捕获返回操作... :s - DaniG