【问题标题】:How-to Keep an Android Activity Running when hitting the back key如何在按下返回键时保持 Android Activity 运行
【发布时间】:2011-04-12 14:36:26
【问题描述】:

我有一个基本上启动 CountDownTimer 的活动。我需要它在使用其他 Android 应用程序(例如 Gmail 和媒体播放器等)时继续运行。

当我点击返回按钮时,我的 Activity 似乎退出了。当用户单击返回/主页键等时,我需要做些什么来保持它运行。

【问题讨论】:

    标签: android android-activity back android-homebutton


    【解决方案1】:


    您必须使用服务,您可以阅读文档here

    【讨论】:

      【解决方案2】:

      活动在不可见时不应该做任何事情。它们基本上是 UI 组件。

      您应该查看services。这些可以作为后台进程运行并且不包含 UI。

      【讨论】:

      • 这是我的想法,但我仍然需要将格式化为小时、分钟和秒的剩余时间(以毫秒为单位)返回给 UI。完成这件事我运气不佳。
      • 我试图将创建和启动计数器的方法放入服务中,并让按钮启动服务。据我了解,服务不应该具有 UI 访问权限,因此如果在服务中运行计时器,我不确定如何向用户显示计时器的剩余时间。如果我要解决这一切都错了,请不要害怕为我指明正确的方向。
      • 您可以在 Activity 中有一个 asynctask 定期轮询服务的时间。或者,当 Activity 恢复时,将特定于 Activity 的计时器与服务同步。
      • 我最终使用了一个服务和通知管理器。请参阅 android 开发网站上的通知管理器示例代码。
      【解决方案3】:

      一些开发人员将其称为严重的“hack”,但我已成功检查是否按下了后退按钮,以便成功清理我的项目。我最近将大部分代码移至onPause() 事件,因为它在按下后退按钮后应用程序关闭之前被调用。但是,如果它真的是你想要的,那就是你的程序,这是我使用的代码:

      if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
          killAndReturnParams(0);         
      }
      

      同样,这个方法之前已经被讨论过了,但我很确定这是因为你不应该以任何理由覆盖后退按钮。用户应该能够在任何应用程序中的任何时候使用后退按钮返回。

      【讨论】:

        【解决方案4】:
        @Override
        public void onBackPressed() {
            mActivity.moveTaskToBack(true);
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-03-27
          • 1970-01-01
          • 2013-01-18
          • 1970-01-01
          • 1970-01-01
          • 2023-04-09
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多