2010-11-11 59 views
0

好的,所以我写的应用程序有一个服务(跟踪GPS数据)与一个主要活动绑定到它与bindService它的onStart()方法,并使用unbindService(ServiceConnection)onStop()方法中的服务解除绑定。服务仍然绑定到主要活动时按下主页按钮,当查看不同的活动

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

我通过调用this.startForeground onUnbindthis.stopForeground onRebind,如果设置为真,并停止和开始分别我的位置读者onUnbindonRebind如果设置为false做到这一点。

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

因此,问题在于这个设置是否属实,如果我正在查看选项屏幕,我希望服务继续前进,而且我不希望出现此通知。所以我设置了一个标志,如果我点击按钮进入选项屏幕,则设置为true,如果标志为true,则不调用unbindService。

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

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

回答

0

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

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

相关问题