【问题标题】:onKeyDown is not called [duplicate]onKeyDown 不被称为 [重复]
【发布时间】:2014-10-16 11:07:44
【问题描述】:

我在活动中覆盖方法 onKeyDown。但只有在按下后退按钮时才会调用它。按下主页按钮时不会调用它。我在 Nexus 5 上对此进行测试。这是什么原因?

【问题讨论】:

    标签: android


    【解决方案1】:

    恐怕这在传统意义上是做不到的。想象一下,如果开发人员可以覆盖主页按钮,最终用户可能/将会遇到的问题?人们可以使用它来阻止用户退出他们的应用程序。这是一个很大的不!

    但是...如果您没有做任何险恶的事情,那么您可以通过多种方式截获主页按钮已被按下的假设。例如:

    按下主页按钮时,操作系统将触发onStop。因此,考虑到这一点,您可以覆盖该方法,如下所示:

    @Override
    protected void onStop()
    {
        super.onStop();
        // Add your HOME button press logic here
    }
    

    在使用任何“假定”主页按钮被按下时要记住的事情:

    1. 当弹出到另一个 Activity 时,您将收到此触发器。
    2. 此方法也会由操作系统在其他多个点触发。

    我想这取决于您弄清楚为什么需要拦截主页按钮的按下,以及是否有任何其他方法可以使用。

    长话短说:

    不,你不能正式拦截主页按钮。

    您可以假设,但会遇到随机触发器也调用 onStop()

    寻找其他选项并完全忽略主页按钮。没有人需要拦截它。

    希望这会有所帮助!

    【讨论】:

    • 如果另一个应用程序启动,我想杀死我的应用程序。我该怎么做?
    • 请提出一个新问题,而不是劫持现有问题。但作为参考,这违背了应用程序的生命周期。当新应用获得焦点时,您的应用将暂停。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-11
    • 1970-01-01
    • 2021-07-29
    相关资源
    最近更新 更多