【问题标题】:Service still bound to main activity when pressing home button, when viewing different activity在查看不同的活动时,按下主页按钮时服务仍然绑定到主要活动
【发布时间】:2010-11-11 04:08:06
【问题描述】:

好的,所以我编写的应用程序有一个服务(用于跟踪 GPS 数据),它有一个主要活动,它在 onStart() 方法中使用 bindService 绑定到它,并在 onStop() 方法中与服务解除绑定使用unbindService(ServiceConnection)

我还有一个 Activity,它是一个选项屏幕,通过按下主 Activity 上的按钮启动。在此选项屏幕上,我有一个显示“在后台运行”的复选框,如果设置为 true,则意味着当用户使用 Home 或 Back 按钮退出应用程序时,服务将继续运行,而不是打开 GPS关闭。

如果设置为 true,我通过调用 this.startForeground onUnbindthis.stopForeground onRebind 来执行此操作,如果设置为 false,则分别停止和启动我的位置读取器 onUnbindonRebind

如果该服务在后台运行,它还会显示一条通知,以确保用户了解 GPS 仍在运行并耗尽他们的电量。此通知的显示和停止依赖于 startForegroundstopForeground 方法。

因此,问题在于无论此设置是否正确,如果我正在查看选项屏幕,我希望服务继续运行,并且我不希望出现该通知。因此,如果我按下按钮进入选项屏幕,我设置一个设置为 true 的标志,如果标志为 true,则不要调用 unbindService。

这可行,除了一个小问题。如果用户在查看选项屏幕时点击主页按钮,则服务不会停止(因为它仍然绑定到主屏幕),如果它应该继续运行,则不会显示警告通知(当然,这意味着该服务仍被视为在后台)。

我应该如何让这个应用程序按照我想要的方式运行?

【问题讨论】:

    标签: android android-service android-homebutton


    【解决方案1】:

    好的,所以我刚刚找到了一个似乎可行的解决方案。我在活动的 onStart() 方法中将选项屏幕绑定到服务,然后在 onStop() 中再次取消绑定。前一个活动的 onStop() 方法在新活动的 onResume() 方法之后才被调用,因此它可以工作。

    有没有人有更好的方法?将活动绑定到它实际上不需要访问的服务似乎很愚蠢。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-30
      相关资源
      最近更新 更多