服务仍然绑定到主要活动时按下主页按钮,当查看不同的活动
好的,所以我写的应用程序有一个服务(跟踪GPS数据)与一个主要活动绑定到它与bindService它的onStart()
方法,并使用unbindService(ServiceConnection)
从onStop()
方法中的服务解除绑定。服务仍然绑定到主要活动时按下主页按钮,当查看不同的活动
我还有一个活动,它是一个选项屏幕,通过按下主活动上的按钮启动。在此选项屏幕上,我有一个复选框,显示“在后台运行”,如果设置为true,则表示当用户使用Home或Back按钮退出应用程序时,该服务将继续运行,而不会转动GPS关闭。
我通过调用this.startForeground onUnbind
和this.stopForeground onRebind
,如果设置为真,并停止和开始分别我的位置读者onUnbind
和onRebind
如果设置为false做到这一点。
如果服务在后台运行,它还会显示一条通知,以确保用户了解GPS仍在运行并耗尽其电量。依靠startForeground
和stopForeground
方法显示并停止此通知。
因此,问题在于这个设置是否属实,如果我正在查看选项屏幕,我希望服务继续前进,而且我不希望出现此通知。所以我设置了一个标志,如果我点击按钮进入选项屏幕,则设置为true,如果标志为true,则不调用unbindService。
这有效,除了一个小问题。如果用户在查看选项屏幕时点击主页按钮,则该服务如果应该是(因为它仍然绑定到主屏幕),则不会停止,并且如果它应该保持运行,则不会显示警告通知(当然,这意味着该服务仍被视为在后台)。
我应该如何让这个应用程序按照我想要的方式行事?
好的,所以我找到了一个似乎可行的解决方案。我将选项屏幕绑定到activity的onStart()方法中的服务,并在onStop()中再次解除绑定。之前的活动的onStop()方法不会在新的onResume()方法之后调用,因此它可以工作。
有人有更好的办法吗?将一个活动绑定到一个实际上不需要访问的服务似乎很愚蠢。