【问题标题】:Android handle overview button (pause activity)Android 处理概览按钮(暂停活动)
【发布时间】:2016-04-29 05:03:57
【问题描述】:

我的问题: 我有一个包含许多活动的小应用程序,其中一个有一个倒数计时器,它会一直倒计时到零。但是,当您在此活动中并且用户按下概览按钮(右 android 按钮)时,他会看到所有应用程序的视图,但活动不会停止或暂停,因此倒数计时器也不会停止。在最坏的情况下,用户再次打开活动并且倒计时达到零(这意味着活动,将打开另一个活动..)

有没有办法处理“概览按钮”? (比如返回按钮getPressedBack())

我没有得到任何好的谷歌搜索,因为右边的 android 按钮的名称是“概述按钮”(我用谷歌发现的..)。

【问题讨论】:

    标签: android android-activity


    【解决方案1】:

    OnPause() 和 onStop() 应在按下“概览”按钮后调用。然后你可以手动停止你的倒计时。当用户返回活动时 onResume() 被调用,您可以再次开始倒计时。

    @Override
    protected void onPause() {
        super.onPause();
        // Handle countdown stop here
    }
    
    @Override
    protected void onResume() {
        super.onResume();
        // Handle countdown start here
    }
    

    【讨论】:

    • 是否有任何方面或其他东西,我可以在其中获得有关该按钮的更多信息,或者因此是其他名称?
    • 您不需要处理按钮。每次您的应用失去焦点时,都会自动调用 onPause() 方法。然后您可以在方法中停止计数,并在调用 onResume() 时重新启动它。您可以在此处找到有关此方法的更多信息:(developer.android.com/training/basics/activity-lifecycle/…)
    • 它起作用了,唯一的问题是,OnResume() 也可以从活动开始,但这很容易处理。 (带布尔值)
    【解决方案2】:

    我认为正确的策略是检查按下的键,方法是在 Activity 上使用 onKeyDown 方法:

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        i(e == yourKeyCode) {
             stopYourTimer()
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }
    

    在您的情况下,检查 onKeyDown 事件上的 KeyEvent.VK_CONTEXT_MENU 并停止您的计时器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多