2011-11-18 84 views

回答

2

不这么认为。后退按钮在活动级别进行管理,而服务与此级别完全分离。

你唯一的办法就是将你的活动中的背影传达给你的服务。但是,你需要你的活动在前台。

4

可以从服务中检测到背压按压吗?

不,对不起。如果您在前台有活动,活动可以检测到BACK按钮。如果您在前台没有任何活动,则BACK按钮与您的代码无关。

+2

我不认为这是完全正确的。例如,服务可以使用'WindowManager#addView()'执行显示窗口的代码,如果该窗口获得焦点,那么'KeyEvent.KEYCODE_BACK'事件将被传递到窗口的根视图,我假设?这完全取决于当前哪个窗口具有焦点......而不是您正在使用的组件的类型。当然,99%的时间你的服务不会显示自己的窗口到屏幕上(除非你正在重写Facebook Chatheads),所以服务一般不会接收到后退按钮点击事件。 –

+0

我正在做一些chathead服务演示。我可以如何将侦听器添加到窗口?我在一个视图上用'setonkeylistener'尝试它,但是我无法捕捉到de back action ...:s – DaniG

0

如果通过你的服务你正在添加视图或其他东西,那么你可以使用EditText框来捕获后面的新闻。只需设置其onKeyListerner即可。 (隐藏其他视图的编辑文本框)

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; 
      } 
     }); 
相关问题