java - android-如何检测服务中的按键?

标签 java android service android-activity keypress

可以通过在 Activity 中重写 onKeyDown 来检测何时按下后退键:

public boolean onKeyDown(int keyCode, KeyEvent event) { 
        if (keyCode == KeyEvent.KEYCODE_MENU) {
            //do your work
            return true;
        }
        return super.onKeyDown(keyCode, event); 
    }

现在,如何从 Service 检测到这一点?

最佳答案

在 Android 中,没有办法“不搞得一团糟”,如果你需要这样做,你实际上做错了什么的可能性很高,因为正如服务文档中所指定的“服务是一个应用程序”代表应用程序希望在不与用户交互的情况下执行长时间运行的操作的组件”。服务组件旨在仅用于长时间执行的任务,这些任务不需要任何交互,也不依赖于除了启动和停止之外的 Activity 的特定操作。默认情况下,该服务不包含您需要的输入法,但只是为了回答您的问题。一种方法是将服务绑定(bind)到 Activity ,从 Activity 获取服务引用,在服务中实现一个方法,然后在 Activity 中调用 onKeyPress 时从 Activity 中执行该方法。

这是将 Activity 绑定(bind)到服务的方式:ServiceBinder

希望这有帮助。

问候!

关于java - android-如何检测服务中的按键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18880196/

相关文章:

.NET运行时优化服务

java - 在rest服务java eclipse中没有得到json响应

java - 多个线程同时写入一个集合

Android异步任务: Only the original thread that created a view hierarchy can touch its views

android - 未初始化的属性访问异常 : lateinit property has not been initialized

android - 尝试访问 android 存储库时出现 "Error: Python not found"

.net - 如何在 .net 中为 Windows 服务设置 ACL?

Java - 使用带有接口(interface)的哈希表作为值

java - Rest 中 GET 请求的 URL 中只有空格会导致 404

asynchronous - 在这种情况下,哪个更好-同步还是异步Web服务?