【问题标题】:Android app: What is running in background?Android 应用程序:什么在后台运行?
【发布时间】:2011-08-02 18:29:11
【问题描述】:

我几乎完成了一个 Android 应用程序的开发。我使用 GPS 位置和短信接收器类。我可以看到,如果我按“HOME”(房子),它仍在运行。我想在按下主页按钮时关闭 GPS 监听器和 SMS_RECEIVER。

我正在使用 eclipse 和 windows。

【问题讨论】:

    标签: android backgroundworker kill-process


    【解决方案1】:

    您可以监听 onStop 事件并关闭监听器。

    Activity.onStop documentation

    注意:也许 onPause 或 onDestroy 可能是更好的选择。阅读activity life-cycle 并选择最佳点来执行此操作。

    【讨论】:

      【解决方案2】:

      使用主页按钮退出将使您的应用程序运行(据我了解,主页更像是一个“最小化”按钮)。使用 back 完全关闭。要覆盖主页按钮功能以实际退出,请使用:

      @Override
      public boolean onKeyDown(int keyCode, KeyEvent event) {
          // TODO Auto-generated method stub
          if (event.getAction() == KeyEvent.ACTION_DOWN) {
              switch (keyCode) {
              case KeyEvent.KEYCODE_HOME:
                  finish();
                  return true;
              }
          }
      
          return super.onKeyDown(keyCode, event);
      }
      

      【讨论】:

      • Jack 是正确的,但强烈建议不要覆盖 Home 键默认操作
      • 是的,Spidy 是对的——您通常希望遵守 Android 指南而不是这样做,但该选项可用。将保持应用程序运行的主页按钮更多地视为一项功能,而不是问题:P。您可以做的是覆盖 onPause()(或 onStop)方法以停止您的位置服务和短信接收器,然后覆盖 onResume() 以重新实例化它们
      【解决方案3】:

      如果您使用广播接收器(您可能使用单独的类并在 AndroidManifest.xml 中声明接收器),请考虑将它们设为您的 Activity 的类成员。 Activity 类内部覆盖 onResume 和 onPause 并在那里注册和注销接收器。

      【讨论】:

      • 我在单独的班级中没有广播。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-29
      • 2021-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多